上NULL
使用comparison運營商將導致聯合國Unkown result
看看下面的例子:
Declare @temp table
(
val1 int,
val2 int
)
INSERT INTO @temp
VALUES (1,NULL),
(NULL,1),
(NULL,NULL)
SELECT CASE
WHEN val1 > val2 THEN 'Val 1 greater'
WHEN val2 > val1 THEN 'val 1 smaller'
WHEN val1 = val2 THEN 'Val1 is equal to val 2'
WHEN val1 = NULL THEN 'val1 = NULL'
WHEN val1 IS NULL THEN 'val1 IS NULL'
ELSE 'Unknown'
END result
FROM @temp
這將導致:
Unknown
val1 IS NULL
val1 IS NULL
請注意,改變ANSI_NULLS
到OFF
,將改變=
運營商的行爲,並且將返回TRUE
爲NULL = NULL
任何方式,恕我直言(我認爲普遍的看法是),最好的做法是使用正常的運營商都從未真正使用IS NULL
可能的重複[爲什麼SQL不支持「= null」而不是「爲空」?](http://stackoverflow.com/questions/7078837/why-doesnt-sql-support-null-instead-的,是空的)。你還應該檢查[爲什麼SQL不支持「= null」而不是「is null」?](http://stackoverflow.com/questions/7078837/why-doesnt-sql-support-null-instead-of- is-null) – MarcinJuraszek