MySQL 與 NULL 值的比較
在處理允許 NULL 值的欄位(例如範例中的 CODE 欄位)時,理解 MySQL 如何處理這些比較至關重要。 為何下列查詢將排除 CODE 為 NULL 的行?
<code class="language-sql">SELECT * from TABLE where CODE!='C'</code>
這是因為 !=
(不等於)運算子不會明確地測試 NULL 值。它只檢查值是否不等於 'C'。由於 NULL 是表示值缺失的特殊值,它既不等於也不等於任何特定值。
要包含 NULL 值,必須使用 IS NULL
或 IS NOT NULL
運算子。這些運算符明確地檢查 NULL 值的存在與否。正確的查詢應該是:
<code class="language-sql">SELECT * from TABLE where CODE IS NULL OR CODE!='C'</code>
透過使用 IS NULL
或 IS NOT NULL
,查詢確保包含 CODE 為 NULL 的行,以及 CODE 不等於 'C' 的行。這是因為 OR
運算子將這兩種條件都視為符合行的有效標準。
總之,當比較可能包含 NULL 值的欄位時,請務必使用 IS NULL
或 IS NOT NULL
運算子來明確測試 NULL 值的存在與否。否則,比較結果可能與預期不符。
以上是為什麼在 WHERE 子句中使用 != 運算子時 MySQL 會排除 NULL 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!