在 MySQL 中,使用標準比較運算子 (=) 擷取包含 null 值的行可能具有挑戰性。這種異常現像源自於 SQL 中空值的獨特性質。
讓我們用一個範例來說明這一點:
SELECT pid FROM planets WHERE userid = NULL
此查詢預期傳回 userid 欄位具有 NULL 值的行。然而,在許多情況下,它會傳回一個空集,儘管資料存在於表中(透過 phpMyAdmin 驗證)。
出現問題的原因是 null SQL 與其他值不同。根據 Codd 的 12 條規則之一,null 不能等於任何其他值,包括它本身。因此,使用 = 運算子將列與 NULL 進行比較將始終傳回 false。
要成功擷取具有null 值的行,我們必須使用IS NULL 運算子:
SELECT pid FROM planets WHERE userid IS NULL
透過使用IS NULL,我們檢查該列是否真正為空,而不是嘗試使用= 將其與NULL進行比較
但是,在修改表結構或引擎之前,必須先用盡其他選項。
以上是如何在MySQL中有效檢索具有NULL值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!