首頁 >資料庫 >mysql教程 >為什麼 MySQL 的 `!=` 運算子會排除具有 NULL 值的行?

為什麼 MySQL 的 `!=` 運算子會排除具有 NULL 值的行?

Susan Sarandon
Susan Sarandon原創
2025-01-09 19:31:42950瀏覽

Why Does MySQL's `!=` Operator Exclude Rows with NULL Values?

MySQL:了解 NULL 值比較

概述:
有效地使用 MySQL 需要清楚地了解 NULL 值在比較操作中的行為。本文重點在於使用 !=(不等於)運算子時 NULL 值的行為。

問題: 假設一個表包含一個允許 NULL 值的 CODE 欄位。即使使用了 CODE,為什麼下面的查詢會省略 != 為 NULL 的行?

<code class="language-sql">SELECT * FROM TABLE WHERE CODE!='C'</code>

解: 當將非 NULL 值與 NULL 進行比較時,MySQL 的 != 運算子不會產生 true/false 結果。 比較被認為是不確定的。

要正確處理 NULL,請使用 IS NULLIS NOT NULL。以下查詢精確排除 CODE 等於「C」或 NULL 的行:

<code class="language-sql">SELECT * FROM TABLE WHERE CODE IS NULL OR CODE!='C'</code>

此方法確保獨立評估兩個條件,僅排除滿足任一條件的行。

進一步說明: 雖然有時會在 MySQL 文件或論壇中看到,但 CODE != '' 並不能取代 CODE IS NOT NULL!= 運算子比較值; IS NULL 檢查是否缺少值。

因此,這些查詢等價:

<code class="language-sql">SELECT * FROM TABLE WHERE CODE != ''
SELECT * FROM TABLE WHERE CODE IS NOT NULL</code>

使用 IS NULLIS NOT NULL 確保正確處理和測試 MySQL 查詢中的 NULL 值。

以上是為什麼 MySQL 的 `!=` 運算子會排除具有 NULL 值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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