為什麼NULL 不等式並不總是返回True
當將NULL 值與不等式運算符(“!=”)進行比較時,它是通常假設結果應該為true,因為NULL 不等於其自身。但是,在 SQL 等某些上下文中,這種假設是無效的。
SQL 的三元邏輯
在 SQL 中,NULL 表示未知值。這就引入了超越真假的第三種邏輯狀態,稱為「未知」。因此,與 NULL的不等式比較遵循三元邏輯,其中結果可以是以下三個選項:
範例:
考慮下列語句:
WHERE (A <> B)
如果A 和 B 都為 NULL,上面的表達式將傳回“unknown”,因為無法確定它們是否真正不相等或是否都未知。
不等式檢查的含義
這個三元邏輯表明簡單的不等式檢查NULL 可能並不總是返回 true。為了確保結果準確,需要使用「IS NULL」和「IS NOT NULL」明確檢查 NULL 條件。
例如,以下表達式可以正確處理與NULL 的不等式比較:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
透過合併這些明確檢查,資料庫可以為涉及NULL 值的所有可能情況確定正確的邏輯結果(真、假或未知)。
以上是為什麼在 SQL 中 `NULL != NULL` 不總是回傳 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!