我不是MySQL的新手,但今天我的代码中发生了一个奇怪的情况,让我感到惊讶。有人可以解释为什么这会给我相同的结果吗?
SELECT * FROM `products` WHERE id = 12
和
SELECT * FROM `products` WHERE id = '12ABC'
在这两种情况下,我都会得到相同的结果,同时选择相同的记录。我希望第二个会让我什么都没回来?!我的ID字段是int(11)unsigned,并且auto_increment标志已打开。
答案 0 :(得分:3)
答案 1 :(得分:1)
MySQL必须进行转换才能在2种不同类型之间进行比较。它尝试将字符串设置为int并从头开始从字符串中获取数字。
你有例如
'ABC12'
将字符串转换为int的结果为0