“状态”列(即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,我也得到了相同的结果?为什么?
答案 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。