不等于 <> 查询排除 NULL 值

Jas*_*n M 3 mysql sql null

我遇到了一些我无法弄清楚的 SQL 查询问题。

SELECT * FROM MasterList WHERE Requested <> "Yes";
Run Code Online (Sandbox Code Playgroud)

如果我在我的表上运行上述查询,我​​会返回 60 条记录。但是应该接近 300。我认为问题是,某些记录在 Requested 字段中是空白的,而其他记录是 NULL。但我会认为 NULL 仍然算作不等于“是”,不是吗?如果没有,有没有办法解决这个问题,而不必返回并“清空”所有空字段?

Dar*_*hta 5

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

SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL;
Run Code Online (Sandbox Code Playgroud)


H.K*_*H.K 5

<=>
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  
Run Code Online (Sandbox Code Playgroud)

在你的情况下使用:

SELECT * FROM MasterList WHERE not Requested <=> "Yes"
Run Code Online (Sandbox Code Playgroud)