ホームページ >データベース >mysql チュートリアル >MySQL の `!=` 演算子が NULL 値を含む行を除外するのはなぜですか?
MySQL: NULL 値の比較について
概要:
MySQL を効果的に使用するには、比較操作内で NULL 値がどのように動作するかを明確に理解する必要があります。この記事では、!=
(等しくない) 演算子を使用する場合の NULL 値の動作に焦点を当てます。
問題:
テーブルに NULL 値を許可する CODE
列が含まれているとします。 CODE
が使用されているにもかかわらず、以下のクエリが !=
が NULL である行を省略するのはなぜですか?
<code class="language-sql">SELECT * FROM TABLE WHERE CODE!='C'</code>
解決策:
MySQL の !=
演算子は、NULL 以外の値を NULL と比較するときに true/false の結果を生成しません。 この比較は不定とみなされます。
NULL を正しく処理するには、IS NULL
または IS 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 NULL
と IS NOT NULL
を使用すると、MySQL クエリでの NULL 値の適切な処理とテストが保証されます。
以上がMySQL の `!=` 演算子が NULL 値を含む行を除外するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。