ホームページ >データベース >mysql チュートリアル >NULL 値は SQL の NOT IN 句の結果にどのような影響を与えますか?

NULL 値は SQL の NOT IN 句の結果にどのような影響を与えますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-23 12:42:12504ブラウズ

How Do NULL Values Affect the Results of NOT IN Clauses in SQL?

SQL の NOT IN 句の NULL について理解する

SQL の NOT IN 句の動作は、NULL 値の存在によって大きく影響されます。 この微妙な違いを注意深く考慮しないと、予期しない結果が生じる可能性があります。 次の例は、この動作を示しています。

クエリの例 1:

<code class="language-sql">select 'true' where 3 in (1, 2, 3, null)</code>

このクエリは次のように評価されます:

<code>3 = 1 OR 3 = 2 OR 3 = 3 OR 3 = NULL</code>

3 = 3 が true であるため、クエリは結果を返します。

クエリの例 2:

<code class="language-sql">select 'true' where 3 not in (1, 2, null)</code>

これは以下と同等です:

<code class="language-sql">3 <> 1 AND 3 <> 2 AND 3 <> NULL</code>

ANSI_NULLS が有効になっている場合 (ほとんどの SQL データベースの標準設定)、3 <> NULLUNKNOWN と評価されます。 AND を含む UNKNOWN 条件の結果は UNKNOWN となり、UNKNOWN 句では WHERE が false として扱われます。したがって、このクエリは行を返しません。

ANSI_NULLS を無効にすると、この動作が変更されます。 ANSI_NULLS がないと、3 <> NULL が true と評価され、クエリが結果を返す可能性があります。これは、NULL 値によってもたらされた矛盾を強調しています。

結論:

NOT IN を使用する場合は、リスト内の潜在的な NULL 値を常に考慮してください。 SQL の 3 つの値のロジック (TRUE、FALSE、UNKNOWN) により、NULL の存在はクエリの結果に大きな影響を与えます。 より予測可能で信頼性の高い結果を得るには、NOT IN 値を使用した NULL を避け、NOT EXISTS などの代替アプローチを使用することをお勧めします。

以上がNULL 値は SQL の NOT IN 句の結果にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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