[英]MySQL automatic string to integer casting in where clause?
我对MySQL并不陌生,但是今天巧合的是,我的代码中发生了一种奇怪的情况,这使我感到惊讶。 有人可以解释为什么这给我相同的结果吗?
SELECT * FROM `products` WHERE id = 12
和
SELECT * FROM `products` WHERE id = '12ABC'
在这两种情况下,选择相同的记录都会得到相同的结果。 我希望第二个人不会给我任何回报? 我的ID字段是int(11)无符号的,并且auto_increment标志处于打开状态。
MySQL必须进行转换才能在2种不同类型之间进行比较。 它尝试将字符串设置为int并从头开始从字符串中获取数字。
例如你有
'ABC12'
字符串转换为int的结果将为0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.