理解為什麼 NULL = NULL 在 SQL Server 中為 False
在 SQL Server 中,WHERE
子句條件(例如 nullParam = NULL
)的計算結果為 false。這可能看起來違反直覺,因為 NULL
通常表示缺失資料。 關鍵在於理解 SQL Server 對 NULL
.
NULL
不僅僅代表缺失的資料;它代表一個未知或不存在的值。 因此,比較兩個 NULL
值本質上是不確定的。 我們不能明確地說兩個未知數是否相等或不相等。這種不確定性會導致錯誤的評估。
這符合 ANSI SQL-92 標準。 預設情況下,SQL Server 使用 ANSI_NULLS ON
運行,強制執行此行為。 但是,設定 ANSI_NULLS OFF
會將比較結果變更為 true。
考慮這個例子:
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
,輸出為「true」。 使用 ANSI_NULLS ON
(預設值),輸出為“false”,示範此設定如何控制 SQL Server 對 NULL
比較的處理。 使用 IS NULL
是檢查空值的正確方法。
以上是為什麼 SQL Server 中 NULL = NULL 會回傳 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!