当我在MySQL中运行两个语句时,我感到很惊讶
SELECT *
FROM jobs
WHERE salary_max = 1000
和
SELECT *
FROM jobs
WHERE salary_max = '1000'
我只是想知道为什么MySQL可以将文本和数字处理为相同,并返回相同的结果。你能解释一下这个吗?
答案 0 :(得分:3)
MySQL会自动转换表达式中不兼容的类型以使它们兼容。它在MySQL documentation中讨论过。
答案 1 :(得分:2)
当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。某些转换是隐式发生的。例如,MySQL会根据需要自动将数字转换为字符串,反之亦然。
mysql> SELECT 1+'1';
-> 2
mysql> SELECT CONCAT(2,' test');
-> '2 test'
有关更多规则和说明,请参阅mysql文档