MySQL子句在哪里?

时间:2017-09-08 07:59:56

标签: mysql sql

我的查询有印刷错误:

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_idso_number的数据类型均为INT。如果so_number = '1m'的数据类型为so_number,则VARCHAR应该有效,因为我已将1m内部引号括起来,条件和条件设为so_number LIKE '%1m%'

那么为什么上面的拼写错误查询有效呢?不应该出现MySQL错误并说它无法找到1m并将其视为1?这是一个已知的错误?我使用的是MySQL 5.6.14。

这是一个截图:

Javadoc enter image description here

1 个答案:

答案 0 :(得分:3)

由MySQL执行的隐式转换。您可以阅读here

  

当运算符与不同类型的操作数一起使用时,请键入   发生转换以使操作数兼容。一些转换   隐含地发生。

e.g:

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