mysql - 如果 value 为 0,为什么 SELECT ... WHERE id = a 返回结果

标签 mysql sql select

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/

相关文章:

php - MYSQL 在午夜订购火车时刻表 PHP

PHP Mysqli 从不同数据库中选择、插入和更新

php - 多个相同的实体关系

php - 如何实现动态数据库列?

php - 从数据库中获取信息

sql - 为多列选择不同的值

sql - 基于SQL的报表数据预过滤

java - 如何在存储过程中将架构名称作为参数传递

oracle - oracle中select中的序列和大小写

sql - mysql count(*) left join group by - 文件夹中的文件数