ホームページ >データベース >mysql チュートリアル >SQL Server で「NULL = NULL」が False を返すのはなぜですか (および「ansi_nulls」はそれにどのような影響を与えますか)?
SQL Server で NULL = NULL
が False を返す理由を理解する
SQL Server による NULL
値の処理により、予期しない結果が生じることがよくあります。 =
演算子は、null 許容列を比較する場合、<code>false</code> を返します。これは、NULL
が不明な値または欠損値を示すためです。
WHERE
のような nullParam = NULL
句条件は、常に <code>false</code> と評価されます。これは、2 つの未知の量が等しいことを明確に確認することは不可能だからです。
SQL-92 標準では、この動作が規定されています。NULL = NULL
は true でも false でもありません。それは未定義です。
ansi_nulls
設定の影響
ansi_nulls
の設定によって挙動が大きく変わります。 ansi_nulls
を OFF
に設定すると、NULL = NULL
は驚くべきことに <code>true</code> と評価されます。 これを以下に示します:
コード例:
<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
の場合:
<code>true</code>
ansi_nulls ON
の場合:
<code>false</code>
NULL を処理するためのベスト プラクティス
この変動性のため、ansi_nulls
比較を使用する場合は、NULL
設定に注意することが重要です。 曖昧さを避けるため、IS NULL
値をチェックするときは常に IS NOT NULL
と NULL
を使用してください。 これにより、ansi_nulls
設定に関係なく、一貫性のある予測可能な動作が保証されます。 これは、信頼性の高い SQL コードに対して推奨されるアプローチです。
以上がSQL Server で「NULL = NULL」が False を返すのはなぜですか (および「ansi_nulls」はそれにどのような影響を与えますか)?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。