ホームページ > データベース > mysql チュートリアル > MySQL の `!=` 演算子が NULL 値を含む行を除外するのはなぜですか?

MySQL の `!=` 演算子が NULL 値を含む行を除外するのはなぜですか?

Susan Sarandon
リリース: 2025-01-09 19:31:42
オリジナル
996 人が閲覧しました

Why Does MySQL's `!=` Operator Exclude Rows with NULL Values?

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 NULLIS NOT NULL を使用すると、MySQL クエリでの NULL 値の適切な処理とテストが保証されます。

以上がMySQL の `!=` 演算子が NULL 値を含む行を除外するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート