ホームページ >データベース >mysql チュートリアル >SQL Server で NULL = NULL が False を返すのはなぜですか?
SQL Server で NULL = NULL が false になる理由を理解する
SQL Server では、WHERE
のような nullParam = NULL
句の条件は false と評価されます。 NULL
はデータの欠落を意味することが多いため、これは直観に反しているように思えるかもしれません。 重要なのは、SQL Server の NULL
.
NULL
は単に欠損データを表すわけではありません。未知の値または存在しない値を表します。 したがって、2 つの NULL
値の比較は本質的に不定です。 2 つの未知数が等しいか等しくないかを明確に言うことはできません。この不確実性により、誤った評価が発生します。
これは、ANSI SQL-92 標準に準拠しています。 デフォルトでは、SQL Server は ANSI_NULLS ON
で動作し、この動作を強制します。 ただし、ANSI_NULLS OFF
を設定すると、比較の結果が true に変更されます。
次の例を考えてみましょう:
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false';</code>
ANSI_NULLS OFF
を使用すると、出力は「true」になります。 ANSI_NULLS ON
(デフォルト) では、出力は「false」となり、この設定が SQL Server による NULL
比較の処理をどのように制御するかを示しています。 IS NULL
を使用することが、null 値をチェックするための正しい方法です。
以上がSQL Server で NULL = NULL が False を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。