-- 錯誤:ANSI_NULLS ON 時永遠傳回空結果
SELECT * FROM 表 WHERE 欄位 = NULL
-- 錯誤:LEN(NULL) 回傳 NULL,不等於 0
SELECT * FROM 表 WHERE LEN(欄位) = 0
-- 標準 SQL,任何 ANSI_NULLS 設定下皆有效
SELECT * FROM 表 WHERE 欄位 IS NULL
-- 判斷非 NULL
SELECT * FROM 表 WHERE 欄位 IS NOT NULL
SQL 三值邏輯:NULL = NULL 結果為 UNKNOWN (非 TRUE),故 WHERE 子句過濾掉。IS NULL 是專門判斷標記的述詞,不受 ANSI_NULLS 影響。
IS NULL / IS NOT NULL。ISNULL(欄位, '') = ''),導致索引失效。ISNULL(欄位, '預設值') 或 COALESCE。