我遇到了一些我无法弄清楚的 SQL 查询问题。
SELECT * FROM MasterList WHERE Requested <> "Yes";
Run Code Online (Sandbox Code Playgroud)
如果我在我的表上运行上述查询,我会返回 60 条记录。但是应该接近 300。我认为问题是,某些记录在 Requested 字段中是空白的,而其他记录是 NULL。但我会认为 NULL 仍然算作不等于“是”,不是吗?如果没有,有没有办法解决这个问题,而不必返回并“清空”所有空字段?
比较时不计算空值,如果要null
返回值,则需要执行以下查询:
SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL;
Run Code Online (Sandbox Code Playgroud)
<=>
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)
归档时间: |
|
查看次数: |
5834 次 |
最近记录: |