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 値を直接比較しようとしないため、条件は正しく機能します。代わりに、未知の値は何にも等しくないという三値論理の原則に依存します。
結論
null 許容列間の不等価性をテストする場合は、単純な条件 (A <> B)。これは、NULL は未知の値であるため、それ自体を含む他の値と直接比較できないためです。 NULL が不明であるとみなされる三値論理アプローチを採用すると、式が簡素化され、正確な結果が保証されます。
以上がSQL の Null 許容列の不等比較にはなぜ「A B」で十分なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。