SQL Server中“is not null”和“<> Null”之间的区别?

时间:2015-10-07 00:33:46

标签: sql sql-server

你能帮助我吗,我需要了解

之间的区别
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为假?

提前致谢

1 个答案:

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

这当然是未知的。