首頁 > 資料庫 > mysql教程 > 如何在 SQL Server 2008R2 中重寫 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 運算子?

如何在 SQL Server 2008R2 中重寫 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 運算子?

Patricia Arquette
發布: 2025-01-11 10:54:43
原創
849 人瀏覽過

How Can I Rewrite IS DISTINCT FROM and IS NOT DISTINCT FROM Operators in SQL Server 2008R2?

在 SQL Server 2008R2 中重寫 IS DISTINCT FROM 運算子

SQL Server 2008R2 不支援標準的 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 運算子。本文提供了一種解決方案,使用與該軟體版本相容的替代語法來重寫這些表達式。

IS DISTINCT FROM

如果兩個值不相等或其中一個值為 NULL,則 IS DISTINCT FROM 謂詞計算結果為 True;如果它們相等且都不為 NULL,則計算結果為 False。它可以改寫如下:

<code class="language-sql">((a != b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))</code>
登入後複製

範例:

<code class="language-sql">SELECT CASE
    WHEN (a != b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL) THEN 'True'
    ELSE 'False'
END AS DistinctResult</code>
登入後複製

IS NOT DISTINCT FROM

IS NOT DISTINCT FROM 運算子在兩個值相等或皆為 NULL 時計算結果為 True,在它們不相等且不皆為 NULL 時計算結果為 False。它可以改寫為:

<code class="language-sql">(NOT (a != b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))</code>
登入後複製

範例:

<code class="language-sql">SELECT CASE
    WHEN (NOT (a != b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL)) THEN 'True'
    ELSE 'False'
END AS NotDistinctResult</code>
登入後複製

注意:

提供的重寫確保結果始終為 True 或 False,避免了帶有 NULL 運算元時可能出現的 Unknown 狀態。

以上是如何在 SQL Server 2008R2 中重寫 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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