你能帮助我吗,我需要了解
之间的区别select * from table where field <> NULL;
和
select * from table where field is not NULL;
并查看
SELECT COUNT(*) where (1 = null) -- return 0
SELECT COUNT(*) where (1 <> null) -- return 0
SELECT COUNT(*) where (1 is not null) -- return 1
SELECT COUNT(*) where (null = null) -- return 0
SELECT COUNT(*) where (null <> null) -- return 0
SELECT COUNT(*) where (null is null) -- return 1
SELECT COUNT(*) where (null is not null) -- return 0
为什么null = null
为假?
提前致谢
答案 0 :(得分:1)
1)关于差异的第一个问题 IS NULL vs = NULL :
(=, <>, <, >, ...
)与NULL
的比较运算符始终生成NULL
。
请改用IS NULL/IS NOT NULL
。
2)第二个问题&#34; why(null = null)为false&#34; :
来自SQL and the Snare of Three-Valued Logic:
一种NULL标记值为:
缺少,因为值为 未知强>
和另一种标记因缺少值而丢失的值 属性缺失。
当您尝试比较NULL
时,您实际上会执行类似
UNKNOWN = UNKNOWN
这当然是未知的。