一尘不染

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

mysql

我对MySQL并不陌生,但是今天巧合的是,我的代码中发生了一种奇怪的情况,这使我感到惊讶。有人可以解释为什么这给我相同的结果吗?

SELECT * FROM `products` WHERE id = 12

SELECT * FROM `products` WHERE id = '12ABC'

在这两种情况下,选择相同的记录都会得到相同的结果。我希望第二个人不会给我任何回报?我的ID字段是int(11)无符号的,并且auto_increment标志处于打开状态。


阅读 186

收藏
2020-05-17

共1个答案

一尘不染

从MySQL文档:

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

文献资料

因此,基本上'12ABC'是投射到12

2020-05-17