我有一个包含以下数据的表:
id | value
1 | 1
2 | NULL
3 | NULL
Run Code Online (Sandbox Code Playgroud)
我的查询:
SELECT * FROM table WHERE value != '1'
Run Code Online (Sandbox Code Playgroud)
结果为空.
为什么查询不返回行2和3?
当value等于NULL谓词变为:NULL != '1'.这可以评估NULL,而不是true像人们预期的那样.
这就是所谓的SQL 三值逻辑:表达式的计算结果为true或false,或者 NULL.
要正确检查NULL您需要使用IS NULL:
WHERE (value != '1') OR (value IS NULL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |