首頁 > 資料庫 > mysql教程 > 為什麼「A B」足以與 SQL 中的可空列進行不等式比較?

為什麼「A B」足以與 SQL 中的可空列進行不等式比較?

Susan Sarandon
發布: 2025-01-03 04:05:38
原創
665 人瀏覽過

Why Does `A  B` Suffice for Inequality Comparisons with Nullable Columns in SQL?

空不等式悖論已解決

在SQL 中,測試兩個可空列之間的相等性需要額外的檢查來處理兩列均為NULL 的情況。這是因為 NULL 代表未知值,不能直接與另一個 NULL 進行比較。然而,在測試不等式時,可以使用更簡單的方法。

可空列的不等式

最初,假設測試可空列之間的不等式需要複雜的條件:

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
登入後複製

但是,在許多SQL 實作中,例如Informix 11.5,一個更簡單的條件就足夠了:

WHERE (A <> B)
登入後複製

理解行為

此行為源自於三元邏輯,其中 NULL 被視為未知值。考慮以下情況:

  • 如果 A 和 B 都已知(非 NULL),則不等式檢定很簡單。
  • 如果 A 或 B 為 NULL,則結果為不定。在三元邏輯中,未知值不等於任何其他值,包括其本身。因此,當任一運算元為 NULL 時,表達式 (A = B) 傳回未知。
  • 如果 A 和 B 都為 NULL,則不等式檢定也是未知的。這是因為 NULL 既不等於也不等於自身。

簡化的不等式

因此,簡化的 (A B)條件可以正常工作,因為它不會嘗試直接比較 NULL 值。相反,它依賴於未知值不等於任何值的三元邏輯原理。

結論

測試可空列之間的不等式時,使用簡單條件(A<>B)。這是因為 NULL 作為一個未知值,無法直接與其他值(包括其本身)進行比較。採用三元邏輯方法(其中 NULL 被視為未知)簡化了表達式並確保結果準確。

以上是為什麼「A B」足以與 SQL 中的可空列進行不等式比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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