NULL 和 UNKNOWN (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
NULL
表示值未知。 NULL 值與空的值或零值不同。 兩個 Null 值永遠不會相等。 兩個 Null 值之間的比較,或 Null 值與任何其他值之間的比較,都會傳回未知,因為每個 NULL
值的值未知。
Null 值通常會指出未知的資料、不適用的資料或之後將要加入的資料。 例如,客戶在客戶下訂單時可能不知道客戶的中間初始字母。
考量:
若要測試查詢中的 Null 值,請在
IS NULL
子句中使用WHERE
或IS NOT NULL
。您可以藉由在 或
UPDATE
語句中INSERT
明確陳述NULL
或將數據行離開INSERT
語句,將 Null 值插入數據行中。Null 值不能做為將數據表中某個數據列與數據表中另一個數據列區別所需的資訊。 範例包括主鍵,或用於散發數據列的資訊,例如散發索引鍵。
備註
當數據中有 Null 值時,邏輯和比較運算子可能會傳回 的第三個結果 UNKNOWN
,而不只是 TRUE
或 FALSE
。 這種三重數值邏輯的需要是造成應用程式錯誤的來源。 布爾表達式中包含 UNKNOWN
傳回 UNKNOWN
的邏輯運算元,除非運算符的結果不相依於 UNKNOWN
表達式。 這些表格提供此行為的範例。
下表顯示將運算子套用至兩個布爾表示式的結果,其中一個 AND
運算式會傳 UNKNOWN
回 。
運算式 1 | 運算式 2 | 結果 |
---|---|---|
TRUE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
FALSE |
UNKNOWN |
FALSE |
下表顯示將運算子套用至兩個布爾表示式的結果,其中一個 OR
運算式會傳 UNKNOWN
回 。
運算式 1 | 運算式 2 | 結果 |
---|---|---|
TRUE |
UNKNOWN |
TRUE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
FALSE |
UNKNOWN |
UNKNOWN |