空不等式悖論已解決
在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」足以與 SQL 中的可空列進行不等式比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!