為什麼 NULL = NULL 在 SQL Server 中計算結果為 False?
Jan 20, 2025 pm 11:12 PMSQL Server 獨特的 NULL 比較:為什麼 NULL = NULL 常常是假
SQL Server 處理 NULL 值的方式與許多其他程式語言不同。 一個常見的混淆來源是 NULL = NULL
通常計算為 FALSE
。這不是一個錯誤;而是一個錯誤。這是一個深思熟慮的設計選擇,植根於 NULL 本身的定義。
在 SQL Server 中,NULL 表示未知或缺失值。 因此,比較兩個 NULL 就像比較兩個未知數 – 不可能明確地說它們是否相等,因為它們的值未定義。 NULL = NULL
的結果通常是 FALSE
(或有時是 NULL
,取決於上下文和系統設定)。
此行為源自於 ANSI SQL-92 標準。但是,了解 SQL Server 中 ansi_nulls
設定的影響至關重要。
ansi_nulls
ansi_nulls
設定決定 SQL Server 如何解釋 NULL 比較。
-
ansi_nulls ON
(預設): 在此設定(預設)下,NULL = NULL
計算結果為FALSE
,與 ANSI SQL-92 標準保持一致。 -
ansi_nulls OFF
: 使用此設置,NULL = NULL
的計算結果為TRUE
。此行為反映了許多其他程式語言中處理 NULL 的方式,其中它通常被認為是表示未定義狀態的特殊值。
範例:
以下程式碼片段示範了差異:
SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'TRUE'; ELSE PRINT 'FALSE'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'TRUE'; ELSE PRINT 'FALSE';
使用ansi_nulls OFF
,兩個IF
語句都會印出「TRUE」。 對於 ansi_nulls ON
,第一個 IF
語句將列印“FALSE”,而第二個
ansi_nulls
理解
以上是為什麼 NULL = NULL 在 SQL Server 中計算結果為 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱門文章

熱門文章

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)
