不等于<>查询排除NULL值

时间:2017-02-09 22:33:49

标签: mysql sql null

我遇到了一些我无法解决的SQL查询问题。

SELECT * FROM MasterList WHERE Requested <> "Yes";

如果我在桌面上运行上述查询,则会返回60条记录。但是应该接近300.我认为问题是,某些记录在Requested字段中只是空白而其他记录是NULL。但我认为NULL仍然算不等于&#34;是&#34;不是吗?如果没有,有没有办法解决这个问题而不必回头而且空白&#39;所有的空字段?

3 个答案:

答案 0 :(得分:2)

比较中不计入空值,如果要返回null个值,则需要执行以下查询:

SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL;

答案 1 :(得分:2)

<=>
NULL安全相等。此运算符执行与=运算符类似的相等比较,但如果两个操作数均为NULL,则返回1而不是NULL;如果一个操作数为NULL,则返回0而不是NULL。

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;  
    -> 1, 1, 0   
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;   
    -> 1, NULL, NULL  

在您的情况下使用:

SELECT * FROM MasterList WHERE not Requested <=> "Yes"

答案 2 :(得分:0)

这是因为null <> 'Yes'表达式的计算结果为null,因此您应该添加单独的is null检查以包含在结果集中满足此条件的记录:

select * from MasterList where Requested <> "Yes" or Requested is null

P.S。:null与任何内容的比较,即使是null本身,也始终返回null