ホームページ > データベース > mysql チュートリアル > SQL Server で NULL = NULL が False と評価されるのはなぜですか?

SQL Server で NULL = NULL が False と評価されるのはなぜですか?

Barbara Streisand
リリース: 2025-01-20 23:12:12
オリジナル
299 人が閲覧しました

Why Does NULL = NULL Evaluate to False in SQL Server?

SQL Server の一意の NULL 比較: NULL = NULL が偽となることが多い理由

SQL Server は、他の多くのプログラミング言語とは異なる NULL 値を処理します。 一般的な混乱の原因は、NULL = NULL が通常 FALSE と評価されるという事実です。これはバグではありません。これは、NULL 自体の定義に根ざした意図的な設計の選択です。

SQL Server では、NULL は不明な値または欠損値を表します。 したがって、2 つの NULL を比較することは、2 つの未知のものを比較することに似ており、値が定義されていないため、それらが等しいかどうかを明確に言うことは不可能です。 NULL = NULL の結果は、多くの場合 FALSE (コンテキストやシステム設定によっては NULL になる場合もあります)。

この動作は、ANSI SQL-92 標準に由来しています。ただし、SQL Server 内の ansi_nulls 設定の影響を理解することが重要です。

ansi_nulls

の役割

ansi_nulls 設定は、SQL Server が NULL 比較を解釈する方法を決定します。

  • ansi_nulls ON (デフォルト): この設定 (デフォルト) では、NULL = NULL は ANSI SQL-92 標準に準拠して FALSE と評価されます。

  • ansi_nulls OFF: この設定では、NULL = NULLTRUE と評価されます。この動作は、他の多くのプログラミング言語で NULL が扱われる方法を反映しており、多くの場合、NULL は未定義の状態を表す特別な値と見なされます。

例:

次のコード スニペットは違いを示しています。

<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 を使用すると、両方の IF ステートメントは「TRUE」を出力します。 ansi_nulls ON を使用すると、最初の IF ステートメントは "FALSE" を出力し、2 番目のステートメントも "FALSE" を出力します

ansi_nulls 設定と NULL 比較に固有のあいまいさを理解することは、堅牢でエラーのない SQL Server コードを作成するために不可欠です。 予期しない結果を避けるために、クエリ内で NULL がどのように処理されるかに常に注意してください。

以上がSQL Server で NULL = NULL が False と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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