mysql - 其中 field=0 返回所有记录

标签 mysql

<分区>

我正在使用 Mysql,我有一个类型为 varchar(50) 且名称为 email 的字段,如果我执行这样的查询:

SELECT * FROM  `users` WHERE email =0

它返回表中的所有记录。这怎么可能?

示例:

记录其中之一:gorkemasan24@gmail.com,此查询也返回此行。

为什么会发生这种情况以及如何避免这种情况?

最佳答案

当您将字符串字段与数字进行比较时,它会将字符串转换为数字,然后比较这些数字。将字符串转换为数字使用字符串开头的数字;如果它不是以数字开头,它将转换为 0

因此,如果您有像 12james@domain.com 这样的电子邮件,它不会被退回,因为它会转换为 12。但是 gorkemasan24@gmail.com 转换为 0

您应该编写 WHERE email = '0' 以将其与字符串而不是数字进行比较。或者,如果您想测试空电子邮件,请使用 WHERE email = ''

关于mysql - 其中 field=0 返回所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36960767/

相关文章:

MySQL 存储过程仅在第一次运行时返回结果

mysql - 聚合数据并 JOIN 两个没有对应键的表

mysql - 更新与另一个表的副本关联的所有行

mysql - 在用 ER 图表示关系之后,在 SQL 中创建表时如何说明它们?

php - Symfony 按实体获取数据库表数据

python - 在 django live 应用程序中将 mysql 数据库从 'utf8' 更改为 'utf8mb4' 对数据的影响

php - PHP/MySQL Web 开发人员应该了解服务器的哪些方面?

php - mysql 基于另一列的 AUTO_INCRMENT

mysql - 查找并删除 MySQL 表中的重复条目

Python,如何实现并行进程