<分区>
我正在使用 Mysql,我有一个类型为 varchar(50)
且名称为 email
的字段,如果我执行这样的查询:
SELECT * FROM `users` WHERE email =0
它返回表中的所有记录。这怎么可能?
示例:
记录其中之一:gorkemasan24@gmail.com
,此查询也返回此行。
为什么会发生这种情况以及如何避免这种情况?
标签 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/