NULL と UNKNOWN (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

NULL は、値が unknown であることを示します。 null 値は、空値または値 0 とは異なります。 2 つの null 値は等しいとは限りません。 2 つの null 値の比較、または null 値とその他の値の比較では、各 NULL の値が不明であるため、unknown が返されます。

null 値は、通常、認識されないデータ、適用できないデータ、または後から追加されるデータを示します。 たとえば、顧客が注文を行った時点で、顧客の中間イニシャルが不明な場合があります。

以下の点を考慮してください。

  • クエリで null 値をテストするには、WHERE句でIS NULLまたはIS NOT NULLを使用します。

  • 列に null 値を挿入するには、INSERTまたはUPDATEステートメントでNULLを明示的に指定するか、列をINSERTステートメントから除外します。

  • Null 値は、テーブル内の 1 つの行とテーブル内の別の行を区別するために必要な情報として使用することはできません。 たとえば、主キーや、行の配布に使用される情報 (配布キーなど) が挙げられます。

解説

データに null 値が存在する場合、論理演算子と比較演算子は、TRUEFALSEではなく、UNKNOWNの 3 番目の結果を返す可能性があります。 このような 3 値論理が必要な場合、多くのアプリケーション エラーの原因になります。 演算子の結果がUNKNOWN式に依存しない限り、UNKNOWN戻りUNKNOWNを含むブール式の論理演算子。 この動作の例をまとめたものが次の表です。

次の表は、1 つの式がUNKNOWNを返す 2 つのブール式にAND演算子を適用した結果を示しています。

式 1 式 2 結果
TRUE UNKNOWN UNKNOWN
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN FALSE

次の表は、1 つの式がUNKNOWNを返す 2 つのブール式にOR演算子を適用した結果を示しています。

式 1 式 2 結果
TRUE UNKNOWN TRUE
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN UNKNOWN