MySQL - номер и текст в предложении WHERE - PullRequest
3 голосов
/ 12 декабря 2011

Я был удивлен, когда я запускаю два оператора в MySQL

SELECT *
FROM jobs
WHERE salary_max = 1000

И

SELECT *
FROM jobs
WHERE salary_max = '1000'

Мне просто интересно, почему MySQL может обрабатывать текст и число одинаково, и он возвращает тот же результат. Можете ли вы объяснить мне об этом?

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

MySQL автоматически конвертирует несовместимые типы в выражениях, чтобы сделать их совместимыми.Это обсуждается в документации MySQL .

2 голосов
/ 12 декабря 2011

Когда оператор используется с операндами разных типов, происходит преобразование типов для обеспечения совместимости операндов. Некоторые преобразования происходят неявно. Например, MySQL автоматически конвертирует числа в строки при необходимости и наоборот.

mysql> SELECT 1+'1';
    -> 2
mysql> SELECT CONCAT(2,' test');
    -> '2 test'

Для дальнейших правил и описаний, пожалуйста, обратитесь к документации MySQL

http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

...