我有一张包含以下数据的表格:
id | value
1 | 1
2 | NULL
3 | NULL
我的查询:
SELECT * FROM table WHERE value != '1'
结果为空。
为什么查询不返回行2
和3
?
答案 0 :(得分:7)
当value
等于NULL
时,谓词变为:NULL != '1'
。评估为NULL
,而不是true
,正如人们所期望的那样。
这就是所谓的three valued logic SQL:表达式的计算结果为true或false,或 NULL
。
要正确检查NULL
,您需要使用IS NULL
:
WHERE (value != '1') OR (value IS NULL)