NULL 比较

NULL 是比较时的一个特例。

假设以下数据。

id someVal
 ----
 0 NULL
 1 1
 2 2

带有查询:

 SELECT id
 FROM table
 WHERE someVal = 1

会返回 id 1

 SELECT id
 FROM table
 WHERE someVal <> 1

会返回 id 2

 SELECT id
 FROM table
 WHERE someVal IS NULL

会返回 id 0

 SELECT id
 FROM table
 WHERE someVal IS NOT NULL

将返回 ids 12

如果你希望在 =<> 比较中将 NULL计数为值,则必须首先将其转换为可数数据类型:

 SELECT id
 FROM table
 WHERE ISNULL(someVal, -1) <> 1

要么

 SELECT id
 FROM table
 WHERE someVal IS NULL OR someVal <> 1

返回 02

或者你可以更改 ANSI Null 设置。