admin

为什么SELECT'WHERE id = a如果值是0会返回结果

sql

Table preview 
Note: 'id' is an integer column (offcourse)

+-------------+
| id | value  |
+----+--------+
| 0  | abc    |
| 1  | def    |
+-------------+

查询:
1.返回abcSELECT value FROM table WHERE id = 0
2.返回defSELECT value FROM table WHERE id = 1
3.不返回任何内容:SELECT value FROM table WHERE id = 2
4.返回abcSELECT value FROM table WHERE id = 'a'

问题: 为什么查询4返回abc?应该没有结果吧?


阅读 252

收藏
2021-06-07

共1个答案

admin

MySQL在数字上下文中无提示地将字符串转换为数字。

它通过转换前导数字字符(例如数字,减号和小数点)来实现。

如果没有数字,它将停止。所以:

where id = 'a'

被解释为:

where id = 0

道德:永远不要在数字常量(或应为数字的常量)周围使用单引号。

2021-06-07