【SQL】SET ANSI_NULLS用途

SET ANSI_NULLS 是 SQL Server 中的一個設定選項,用來控制如何處理帶有 NULL 值的查詢。

ANSI_NULLS 設為 ON 時,SQL Server 將會遵循 ANSI SQL 標準,即比較操作符(如 =<>)與 NULL 值進行比較時總是返回 UNKNOWN,而不是 TRUE 或 FALSE。

因此,你需要使用 IS NULLIS 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;

注意事項

  1. 預設行為: SQL Server 的預設行為是 ANSI_NULLS ON。大多數情況下,建議保持這個設置以符合 ANSI SQL 標準。
  2. 持久性: SET ANSI_NULLS 是一個會話級別的設置,這意味著它只影響當前連接。如果需要永久性更改,可以在數據庫設置中進行調整。
  3. 索引視圖和計算列: 當創建索引視圖或計算列時,必須將 ANSI_NULLS 設為 ON。

探索更多來自 宸宸知識庫 的內容

訂閱後即可透過電子郵件收到最新文章。

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *