我正在使用Mysql,我有一个类型为hash(x::t, h) = hash(x.x2, hash(x.x1, h))
且名称为varchar(50)
的字段,如果我执行这样的查询:
email
它返回表格中的所有记录。怎么可能呢?
示例:
记录其中一个:SELECT * FROM `users` WHERE email =0
,此查询也返回此行。
为什么会发生这种情况以及如何避免这种情况?
答案 0 :(得分:2)
将字符串字段与数字进行比较时,它会将字符串转换为数字,然后比较这些数字。将字符串转换为数字使用字符串开头的数字;如果它不是以数字开头,则会转换为0
。
因此,如果您收到12james@domain.com
这样的电子邮件,则不会返回,因为这会转换为12
。但gorkemasan24@gmail.com
会转换为0
。
您应该编写WHERE email = '0'
来将其与字符串而不是数字进行比较。或者,如果您要测试空电子邮件,请使用WHERE email = ''
。