首頁 >資料庫 >mysql教程 >如何正確比較 SQL 查詢中的 NULL 值?

如何正確比較 SQL 查詢中的 NULL 值?

DDD
DDD原創
2025-01-21 13:12:10268瀏覽

How to Correctly Compare NULL Values in SQL Queries?

深入理解SQL NULL值比較

在SQL中,NULL值代表未知或空值。使用常規比較運算子(例如 =,!=)將NULL與其他值進行比較時,結果總是NULL。這可能導致查詢結果出現意外行為。

「where x is null」與「where x = null」的差異

「where x is null」語法明確檢查列x是否為NULL,而「where x = null」嘗試將列值與NULL字面量進行比較。後者比較失敗,因為它導致NULL,在WHERE子句中總是假。

NULL值行為解釋

SQL將NULL解釋為“未知”,這意味著任何與NULL的比較都會導致未知狀態。因此,常規比較運算子無法有效地測試NULL值。

IS NULL和IS NOT NULL語法

為了解決這個問題,SQL提供了「IS NULL」和「IS NOT NULL」語法。這些特殊條件明確檢查列中是否存在NULL值。 「IS NULL」如果列為NULL則回傳true,而「IS NOT NULL」如果欄位不為NULL則傳回true。

範例

以下SQL查詢說明了常規比較運算子和IS NULL語法之間的區別:

<code class="language-sql">CREATE TABLE example (value INT);
INSERT INTO example VALUES (1), (NULL);

SELECT * FROM example WHERE value = NULL; -- 返回空结果
SELECT * FROM example WHERE value IS NULL; -- 返回包含NULL值的行</code>

此查詢示範了常規比較不會傳回包含NULL值的行,而IS NULL語法可以正確識別它。

以上是如何正確比較 SQL 查詢中的 NULL 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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