MySQL - WHERE子句中的数字和文本

时间:2011-12-12 11:50:34

标签: mysql where

当我在MySQL中运行两个语句时,我感到很惊讶

SELECT *
FROM jobs
WHERE salary_max = 1000

SELECT *
FROM jobs
WHERE salary_max = '1000'

我只是想知道为什么MySQL可以将文本和数字处理为相同,并返回相同的结果。你能解释一下这个吗?

2 个答案:

答案 0 :(得分:3)

MySQL会自动转换表达式中不兼容的类型以使它们兼容。它在MySQL documentation中讨论过。

答案 1 :(得分:2)

当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。某些转换是隐式发生的。例如,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