首頁 > 資料庫 > mysql教程 > 為什麼 SQL Server 中「NULL = NULL」會回傳 False(以及「ansi_nulls」如何影響它)?

為什麼 SQL Server 中「NULL = NULL」會回傳 False(以及「ansi_nulls」如何影響它)?

Barbara Streisand
發布: 2025-01-20 23:09:09
原創
497 人瀏覽過

Why `NULL = NULL` is False in SQL Server (and the `ansi_nulls` Setting)

了解為什麼 NULL = NULL 在 SQL Server 中傳回 False

SQL Server 對 NULL 值的處理通常會導致意外結果。 = 運算子在比較可空列時傳回 <code>false</code>,因為 NULL 表示未知或缺失值。

WHERE 這樣的 nullParam = NULL 子句條件總是評估為 <code>false</code>。這是因為不可能明確確認兩個未知量之間的相等性。

SQL-92 標準規定了此行為:NULL = NULL 既不是 true 也不是 false;它是未定義的。

ansi_nulls 設定的影響

行為會根據 ansi_nulls 設定而顯著改變。 將 ansi_nulls 設定為 OFF 時,NULL = NULL 的計算結果令人驚訝地為 <code>true</code>。 如下圖所示:

程式碼範例:

<code class="language-sql">SET ANSI_NULLS OFF;

IF NULL = NULL
    PRINT 'true';
ELSE
    PRINT 'false';

SET ANSI_NULLS ON;

IF NULL = NULL
    PRINT 'true';
ELSE
    PRINT 'false';</code>
登入後複製

輸出:

ansi_nulls OFF

<code>true</code>
登入後複製

ansi_nulls ON

<code>false</code>
登入後複製

處理 NULL 的最佳實務

由於這種可變性,在使用 ansi_nulls 比較時了解 NULL 設定至關重要。 為了避免歧義,在檢查 IS NULL 值時始終使用 IS NOT NULLNULL。 無論 ansi_nulls 設定如何,這都確保了一致且可預測的行為。 這是可靠 SQL 程式碼的建議方法。

以上是為什麼 SQL Server 中「NULL = NULL」會回傳 False(以及「ansi_nulls」如何影響它)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板