首頁 > 資料庫 > mysql教程 > 為什麼 != 在 SQL 中與 NULL 比較時失敗?

為什麼 != 在 SQL 中與 NULL 比較時失敗?

Linda Hamilton
發布: 2025-01-21 14:51:08
原創
111 人瀏覽過

Why Does != Fail When Comparing to NULL in SQL?

SQL 的 != 運算子與 NULL 難題

SQL 的 !=(不等於)運算子在處理 NULL 值時提出了獨特的挑戰。 雖然它可以有效地比較非 NULL 值,但它與 NULL 的行為是違反直覺的。

!= NULL

的問題

考慮這個:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows</code>
登入後複製

這些查詢旨在查找 MyColumn 不是 NULL 的行,令人驚訝的是返回空結果集。這不是一個錯誤;而是一個錯誤。這是由於NULL的本質。 NULL 不代表值;它代表值的缺失。 因此,使用 NULL!= 將值與 = 進行比較總是會產生 UNKNOWN,而不是 TRUEFALSE

解:IS NOT NULL

要精確辨識非 NULL 值,請使用 IS NOT NULL 謂詞:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows</code>
登入後複製

IS NOT NULL(及其對應的 IS NULL)專為處理 SQL 比較中的 NULL 值而設計。

與非 NULL 值比較

與非 NULL 值進行比較時,!= 運算子如預期運作:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'</code>
登入後複製

重點

涉及NULL值的精確SQL查詢需要使用IS NOT NULLIS NULL。 避免使用 !== 進行 NULL 比較,以防止意外結果。 使用這些專用謂詞可以可靠地處理 SQL 語句中的 NULL

以上是為什麼 != 在 SQL 中與 NULL 比較時失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板