ホームページ >データベース >mysql チュートリアル >SQL クエリで NULL 値を正しく比較するにはどうすればよいですか?

SQL クエリで NULL 値を正しく比較するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-21 13:12:10309ブラウズ

How to Correctly Compare NULL Values in SQL Queries?

SQL NULL 値の比較についての深い理解

SQL では、NULL 値は不明な値または空の値を表します。通常の比較演算子 (=、!= など) を使用して NULL を他の値と比較する場合、結果は常に NULL になります。これにより、クエリ結果で予期しない動作が発生する可能性があります。

「x が null の場合」と「x = null の場合」の違い

「where x is null」構文は列 x が NULL かどうかを明示的にチェックしますが、「where x = null」は列の値を NULL リテラルと比較しようとします。後者の比較は、結果が NULL (WHERE 句では常に false) になるため失敗します。

NULL 値の動作の説明

SQL は NULL を「不明」として解釈します。これは、NULL と比較すると不明な状態になることを意味します。したがって、通常の比較演算子は NULL 値を効果的にテストできません。

IS NULL および IS NOT NULL の構文

この問題を解決するために、SQL には「IS NULL」および「IS NOT NULL」構文が用意されています。これらの特別な条件は、列内の NULL 値の存在を明示的にチェックします。 「IS NULL」は列が NULL の場合に true を返し、「IS NOT NULL」は列が NULL でない場合に true を返します。

次の SQL クエリは、通常の比較演算子と IS NULL 構文の違いを示しています。

<code class="language-sql">CREATE TABLE example (value INT);
INSERT INTO example VALUES (1), (NULL);

SELECT * FROM example WHERE value = NULL; -- 返回空结果
SELECT * FROM example WHERE value IS NULL; -- 返回包含NULL值的行</code>

このクエリは、通常の比較では NULL 値を含む行を返さない一方で、IS NULL 構文では NULL 値を正しく識別することを示しています。

以上がSQL クエリで NULL 値を正しく比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。