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 子句中使用 WHEREIS NOT NULL

  • 您可以藉由在 或 UPDATE 語句中INSERT明確陳述NULL或將數據行離開INSERT語句,將 Null 值插入數據行中。

  • Null 值不能做為將數據表中某個數據列與數據表中另一個數據列區別所需的資訊。 範例包括主鍵,或用於散發數據列的資訊,例如散發索引鍵。

備註

當數據中有 Null 值時,邏輯和比較運算子可能會傳回 的第三個結果 UNKNOWN ,而不只是 TRUEFALSE。 這種三重數值邏輯的需要是造成應用程式錯誤的來源。 布爾表達式中包含 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