其中field = 0返回所有记录

时间:2016-04-30 22:05:21

标签: mysql

我正在使用Mysql,我有一个类型为hash(x::t, h) = hash(x.x2, hash(x.x1, h)) 且名称为varchar(50)的字段,如果我执行这样的查询:

email

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

示例:

记录其中一个:SELECT * FROM `users` WHERE email =0 ,此查询也返回此行。

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

1 个答案:

答案 0 :(得分:2)

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

因此,如果您收到12james@domain.com这样的电子邮件,则不会返回,因为这会转换为12。但gorkemasan24@gmail.com会转换为0

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