Table preview
Note: 'id' is an integer column (offcourse)
+-------------+
| id | value |
+----+--------+
| 0 | abc |
| 1 | def |
+-------------+
查询:
1. 返回abc
:SELECT value FROM table WHERE id = 0
2. 返回def
:SELECT value FROM table WHERE id = 1
3. 不返回任何内容:SELECT value FROM table WHERE id = 2
4. 返回abc
:SELECT value FROM table WHERE id = 'a'
问题:为什么查询 4 返回 abc
?它应该不会给出任何结果,对吗?
最佳答案
MySQL 在数字上下文中默默地将字符串转换为数字。
它通过转换前导数字字符(例如数字、减号和小数点)来实现这一点。
如果没有数字,则停止。所以:
where id = 'a'
解释为:
where id = 0
道德:切勿在数字常量或应该是数字的常量周围使用单引号。
关于mysql - 如果 value 为 0,为什么 SELECT ... WHERE id = a 返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36084405/