NULL を使用した不等式が常に True を返さない理由
NULL 値を不等演算子 ("!=") と比較すると、次のようになります。 NULL はそれ自体と等しくないため、結果は true であると想定されることがよくあります。ただし、SQL などの特定のコンテキストでは、この仮定は無効です。
SQL の三項論理
SQL では、NULL は不明な値を表します。これにより、「不明」として知られる、真と偽を超えた 3 番目の論理状態が導入されます。その結果、NULL との不等比較は 3 項論理に従い、結果は 3 つのうちの 1 つになります。オプション:
例:
検討次のステートメント:
WHERE (A <> B)
A と B が両方とも NULL の場合、これらが本当に等しくないのか、それとも両方とも不明なのかを判断する方法がないため、上記の式は「unknown」を返します。
不等式チェックの意味
この 3 項ロジックは、単純な不等式チェックを指示します。 NULL を指定すると、常に true が返されるとは限りません。正確な結果を保証するには、「IS NULL」と「IS NOT NULL」を使用して NULL 条件を明示的にチェックする必要があります。
たとえば、次の式は NULL との不等比較を正しく処理します。
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
これらの明示的なチェックを組み込むことにより、データベースは NULL 値を含むすべての考えられるケースに対して正しい論理結果 (真、偽、または不明) を決定できます。
以上がSQL で「NULL != NULL」が常に True を返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。