SET ANSI_NULLS
是 SQL Server 中的一個設定選項,用來控制如何處理帶有 NULL 值的查詢。
當 ANSI_NULLS
設為 ON 時,SQL Server 將會遵循 ANSI SQL 標準,即比較操作符(如 =
和 <>
)與 NULL 值進行比較時總是返回 UNKNOWN,而不是 TRUE 或 FALSE。
因此,你需要使用 IS NULL
或 IS NOT NULL
來進行 NULL 值的比較。
語法:
SET ANSI_NULLS { ON | OFF }
當 ANSI_NULLS
為 ON 時
SET ANSI_NULLS ON;
— 此查詢將不返回任何行,因為 ColumnName = NULL
返回 UNKNOWN
SELECT *
FROM TableName
WHERE ColumnName = NULL;
— 正確的方式是使用 IS NULL
SELECT *
FROM TableName
WHERE ColumnName IS NULL;
當 ANSI_NULLS
為 OFF 時
SET ANSI_NULLS OFF;
— 此查詢將返回所有 ColumnName 為 NULL 的行,因為 SQL Server 不遵循 ANSI SQL 標準
SELECT *
FROM TableName
WHERE ColumnName = NULL;
注意事項
- 預設行為: SQL Server 的預設行為是
ANSI_NULLS ON
。大多數情況下,建議保持這個設置以符合 ANSI SQL 標準。 - 持久性:
SET ANSI_NULLS
是一個會話級別的設置,這意味著它只影響當前連接。如果需要永久性更改,可以在數據庫設置中進行調整。 - 索引視圖和計算列: 當創建索引視圖或計算列時,必須將
ANSI_NULLS
設為 ON。
探索更多來自 宸宸知識庫 的內容
訂閱後即可透過電子郵件收到最新文章。