學習SQLServer: 設定SET ANSI_NULLS

來源:互聯網
上載者:User

 

指定與空值一起使用時的等於 (=) 和不等於 (<>) 比較子的 SQL-92 標準行為。

當 SET ANSI_NULLS 為 ON 時,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍返回零行。 即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會返回零行。

當 SET ANSI_NULLS 為 OFF 時,等於 (=) 和不等於 (<>) 比較子不遵從 SQL-92 標準。 使用 WHERE column_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。 使用 WHERE column_name <> NULL 的 SELECT 語句返回列中包含非空值的行。 此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句返回所有不為 XYZ_value 也不為 NULL 的行。

當 SET ANSI_NULLS 為 ON 時,所有對空值的比較均取值為 UNKNOWN。

當 SET ANSI_NULLS 為 OFF 時,如果資料值為 NULL,則所有資料對空值的比較將取值為 TRUE。 如果未指定 SET ANSI_NULLS,則應用當前資料庫的 ANSI_NULLS 選項設定。

僅當某個比較運算元是值為 NULL 的變數或文字 NULL 時,SET ANSI_NULLS ON 才會影響比較。

如果比較雙方是列或複合運算式,則該設定不會影響比較。

為使指令碼按預期運行,不管 ANSI_NULLS 資料庫選項或 SET ANSI_NULLS 的設定如何,在可能包含空值的比較中使用 IS NULL 和 IS NOT NULL。

在執行分散式查詢時應將 SET ANSI_NULLS 設定為 ON。

對計算資料行或索引檢視表建立或更改索引時,SET ANSI_NULLS 也必須為 ON。

如果 SET ANSI_NULLS 為 OFF,則針對錶(包含計算資料行或索引檢視表的索引)的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。SQL Server 將返回一個錯誤訊息,該錯誤訊息會列出所有違反所需值的 SET 選項。 另外,在執行 SELECT 語句時,如果 SET ANSI_NULLS 為 OFF,則 SQL Server 將忽略計算資料行或視圖的索引值並解析選擇操作,就好像表或視圖沒有這樣的索引一樣。

要求具有 public 角色的成員資格

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.