ホームページ > データベース > mysql チュートリアル > SQL の Null 許容列の不等比較にはなぜ「A B」で十分なのでしょうか?

SQL の Null 許容列の不等比較にはなぜ「A B」で十分なのでしょうか?

Susan Sarandon
リリース: 2025-01-03 04:05:38
オリジナル
705 人が閲覧しました

Why Does `A  B` Suffice for Inequality Comparisons with Nullable Columns in SQL?

NULL 不等式のパラドックスが解決されました

SQL では、NULL 許容の 2 つの列間の等価性をテストするには、両方の列が NULL である場合を処理するための追加のチェックが必要です。これは、不明な値を表す NULL を別の NULL と直接比較できないためです。ただし、不等式をテストする場合は、より単純なアプローチを使用できます。

Nullable Columns による不等式

当初、Nullable Columns 間の不等式をテストするには複雑な手法が必要であると想定されていました。条件:

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
ログイン後にコピー

ただし、Informix などの多くの SQL 実装では11.5 では、より単純な条件で十分です。

WHERE (A <> B)
ログイン後にコピー

動作を理解する

この動作は、NULL が未知の値として扱われる 3 値論理から発生します。次のケースを考えてみましょう:

  • A と B の両方が既知 (NULL でない) の場合、不等式テストは簡単です。
  • A または B のいずれかが NULL の場合、結果は次のようになります。不定。三値論理では、未知の値は、それ自体を含め、他の値と等しくありません。したがって、どちらかのオペランドが NULL の場合、式 (A = B) は不明を返します。
  • A と B の両方が NULL の場合、不等式テストも不明です。これは、NULL がそれ自体と等しくない、または等しくないためです。

単純化された不等式条件

したがって、単純化された (A <> B) NULL 値を直接比較しようとしないため、条件は正しく機能します。代わりに、未知の値は何にも等しくないという三値論理の原則に依存します。

結論

null 許容列間の不等価性をテストする場合は、単純な条件 (A <> B)。これは、NULL は未知の値であるため、それ自体を含む他の値と直接比較できないためです。 NULL が不明であるとみなされる三値論理アプローチを採用すると、式が簡素化され、正確な結果が保証されます。

以上がSQL の Null 許容列の不等比較にはなぜ「A B」で十分なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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