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
道德:永远不要在数字常量(或应为数字的常量)周围使用单引号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句