我们是否仅需要在MYSQL select查询中传递“ INT”类型数据的int值?

时间:2019-05-29 10:56:59

标签: mysql

“状态”列(即1ooo,1ee)中实际上没有以下值,但结果正在发送。状态列仅包含一个与1对应的记录。

QRY-1:select * from User_Table where key ='xxxxxxxxxxxxxxxxxxxxxxxxx' and status=1;

QRY-2:select * from User_Table where key ='xxxxxxxxxxxxxxxxxxxxxxxxx' and status="1";

QRY-3:select * from User_Table where key ='xxxxxxxxxxxxxxxxxxxxxxxxx' and status="1ooo";

QRY-4:select * from User_Table where key ='xxxxxxxxxxxxxxxxxxxxxxxxx' and status="1ee";

QRY-1:确定

对于上述QRY-2,QRY-3,QRY-4,我也得到了相同的结果?为什么?

2 个答案:

答案 0 :(得分:2)

之所以发生这种情况,是因为SQL ..执行了隐式转换,并且在每种情况下,首字符char(或char集)都是有效数字

'1' , '1ooooì, '1ee'   became 1 for implict conversion to destination type

所有查询都变为

select * from User_Table where key ='xxxxxxxxxxxxxxxxxxxxxxxxx' and status=1

答案 1 :(得分:0)

之所以发生这种情况,是因为在将运算符与不同类型的操作数一起使用时发生隐式转换。在您的情况下,将int与字符串进行比较。您可以看到更多Type Conversion in Expression Evaluation