" SQL 中運算子與 NULL 比較失敗? ” />
理解 SQL 中的 NULL 比較
SQL 使用「!=」和「」用於不平等檢查。 但是,這些運算符在使用 NULL
值時會出現意外行為。
問題:
考慮這些 SQL 查詢:
<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; SELECT * FROM MyTable WHERE MyColumn <> NULL; SELECT * FROM MyTable WHERE MyColumn IS NOT NULL;</code>
前兩個查詢傳回空結果集,而第三個查詢正確傳回 568 行。 為什麼會出現這種差異?
說明:
“!=”和“”比較值。 然而,NULL
不是一個值;而是一個值。它表示沒有值。 因此,這些運算符不適合NULL
比較。
使用 IS NULL
或 IS NOT NULL
來代替。這些謂詞專門檢查值是否存在。 第三個查詢的成功源自於其正確使用IS NOT NULL
.
重點:
NULL
值,請使用 IS NOT NULL
。 NULL
值進行比較。 NULL
不能被視為等於或不等於任何值,因為它代表缺少的資料。 以上是為什麼SQL中「!=」和「<>」運算子無法與NULL比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!