MySql - 检查空值时查询结果不正确

时间:2012-04-06 17:04:40

标签: php mysql database null

当我尝试选择没有电子邮件的用户记录时,我的查询没有给出正确的结果:

select * from users where email=''

select * from users where email=NULL

两者都给出不同的结果,但都没有给出正确的结果。我怎样才能得到正确的结果?

3 个答案:

答案 0 :(得分:4)

它是IS NULL或IS NOT NULL。

select * from users where email IS NULL

根据用户如何“无电子邮件”,您应该将字段的默认值设置为NULL并使该字段为空。然后,如果对该表中的新记录执行插入,则电子邮件将为NULL而不是空。

或者,如果您已经遇到了不匹配的表格,请尝试以下方法:

select * from users where LENGTH(COALESCE(email,'')) = 0

那将为你提供email的'空'值的所有记录,将NULL视为空。

答案 1 :(得分:1)

null不等于null。

您需要指定IS NULL

答案 2 :(得分:0)

Mysql将它们都区别对待

email=''检查空值,email=NULL检查空值,这就是为什么它们都会给出不同的结果。

您应该使用is NULL检查空值和空值。

SELECT *  FROM users WHERE email IS NULL