" 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>
最初の 2 つのクエリは空の結果セットを返しますが、3 番目のクエリは 568 行を正しく返します。 なぜこの矛盾があるのでしょうか?
説明:
「!=」と「<>」 値を比較します。 ただし、NULL
は値ではありません。それは値が存在しないことを意味します。 したがって、これらの演算子は NULL
比較には適していません。
代わりに IS NULL
または IS NOT NULL
を使用してください。これらの述語は、値の有無を特にチェックします。 3 番目のクエリが成功したのは、IS NOT NULL
.
キーポイント:
NULL
以外の値をテストするには、IS NOT NULL
を使用します。NULL
以外の特定の値と比較します。NULL
は、欠損データを表すため、どの値とも等しい、または等しくないと見なすことはできません。以上がSQL で「!=」および「<>」演算子が NULL と比較できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。