首頁 >資料庫 >mysql教程 >如何在MySQL中有效檢索具有NULL值的行?

如何在MySQL中有效檢索具有NULL值的行?

DDD
DDD原創
2024-12-25 04:52:11341瀏覽

How Can I Effectively Retrieve Rows with NULL Values in MySQL?

了解 MySQL 中的 Null 值

在 MySQL 中,使用標準比較運算子 (=) 擷取包含 null 值的行可能具有挑戰性。這種異常現像源自於 SQL 中空值的獨特性質。

檢索空值的挑戰

讓我們用一個範例來說明這一點:

SELECT pid FROM planets WHERE userid = NULL

此查詢預期傳回 userid 欄位具有 NULL 值的行。然而,在許多情況下,它會傳回一個空集,儘管資料存在於表中(透過 phpMyAdmin 驗證)。

問題的起源

出現問題的原因是 null SQL 與其他值不同。根據 Codd 的 12 條規則之一,null 不能等於任何其他值,包括它本身。因此,使用 = 運算子將列與 NULL 進行比較將始終傳回 false。

解:IS NULL 運算子

要成功擷取具有null 值的行,我們必須使用IS NULL 運算子:

SELECT pid FROM planets WHERE userid IS NULL

透過使用IS NULL,我們檢查該列是否真正為空,而不是嘗試使用= 將其與NULL進行比較

其他注意事項

  • 確保該列實際上為空,並且不儲存為「NULL」或帶有尾隨空格的「null」。
  • 檢查是否表引擎是MyISAM,它可能會遇到空處理問題。遷移到 InnoDB 可以解決這個問題。

但是,在修改表結構或引擎之前,必須先用盡其他選項。

以上是如何在MySQL中有效檢索具有NULL值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn