我的查询有印刷错误:
SELECT
SUM(qty)
AS
'aqty1'
FROM
po_details
WHERE
product_id ='1196'
AND
so_number = '1m';
应该是:
SELECT
SUM(qty)
AS
'aqty1'
FROM
po_details
WHERE
product_id ='1196'
AND
so_number = '1';
但是第一个错误查询so_number = '1m'
神秘地输出正确,输出与第二个正确查询相同,不应该是这样,对吗?
product_id
和so_number
的数据类型均为INT
。如果so_number = '1m'
的数据类型为so_number
,则VARCHAR
应该有效,因为我已将1m
内部引号括起来,条件和条件设为so_number LIKE '%1m%'
。
那么为什么上面的拼写错误查询有效呢?不应该出现MySQL错误并说它无法找到1m
并将其视为1
?这是一个已知的错误?我使用的是MySQL 5.6.14。
这是一个截图:
答案 0 :(得分:3)
由MySQL执行的隐式转换。您可以阅读here:
当运算符与不同类型的操作数一起使用时,请键入 发生转换以使操作数兼容。一些转换 隐含地发生。
e.g:
mysql> SELECT 1+'1';
-> 2
mysql> SELECT CONCAT(2,' test');
-> '2 test'