繁体   English   中英

MySQL自动将字符串转换为where子句中的整数?

[英]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文档:

当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容

文献资料

因此,基本上, '12ABC''12ABC'12

MySQL必须进行转换才能在2种不同类型之间进行比较。 它尝试将字符串设置为int并从头开始从字符串中获取数字。

例如你有

'ABC12'

字符串转换为int的结果将为0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM