Transact-SQL 支持在與空值進行比較時,允許比較運算符返回 TRUE 或 FALSE。
通過設置 ANSI_NULLS OFF 可將此選項激活。
當 ANSI_NULLS 為 OFF 時,
如果 ColumnA 包含 Null 值,則 ColumnA = NULL 之類的比較操作會返回 TRUE;
如果 ColumnA 除了包含 NULL 外還包含某些值,則這類比較操作將返回 FALSE。
比較計算結果為 NULL 的兩個表達式也會返回 TRUE。
ANSI_NULLS 設置不影響包含 NULL 的聯接列。聯接列中包含 NULL 的行不是結果集的一部分。
當 ANSI_NULLS 設置為 OFF 時,以下 SELECT 語句返回 Customer 表中 Region 為 Null 值的所有行:
復制代碼
SELECT CustomerID, AccountNumber, TerritoryID
FROM AdventureWorks.Sales.Customer
WHERE TerritoryID = NULL
如果 SET ANSI_NULLS ON
那么 SQL 語句中, 判斷 非空的寫法, 要修改為:
WHERE 字段 IS NULL
因為 SET ANSI_NULLS ON 以后,
NULL = NULL 將 返回 false.
(引文)https://zhidao.baidu.com/question/291178132.html