NULL と UNKNOWN (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric Warehouse Microsoft Fabric SQL Database
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 値が存在する場合、論理演算子と比較演算子は、TRUE
やFALSE
ではなく、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 |