为什么SELECT * FROM表WHERE值!='1'不返回NULL字段?

时间:2016-03-04 14:23:30

标签: mysql

我有一张包含以下数据的表格:

id | value
 1 | 1
 2 | NULL
 3 | NULL

我的查询:

SELECT * FROM table WHERE value != '1'

结果为空。

为什么查询不返回行23

1 个答案:

答案 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)