Null 性和三值邏輯比較
適用於:SQL Server
如果您熟悉 SQL Server 數據類型,您可以在 .NET Framework 的 System.Data.SqlTypes 命名空間中找到類似的語意和精確度。 不過,有一些差異,本主題涵蓋這些差異中最重要的部分。
NULL 值
原生 Common Language Runtime (CLR) 數據類型與 SQL Server 數據類型的主要差異在於前者不允許 NULL 值,而後者則提供完整的 NULL 語意。
比較會受到 NULL 值的影響。 比較兩個值 x 和 y 時,如果 x 或 y 為 NULL,則某些邏輯比較會評估為 UNKNOWN 值,而不是 true 或 false。
SqlBoolean 資料類型
System.Data.SqlTypes 命名空間引進 SqlBoolean 類型來表示這個 3 值邏輯。 任何 SqlTypes 之間的比較會傳回 SqlBoolean 實值類型。 UNKNOWN 值是以 SqlBoolean 類型的 Null 值表示。 提供IsTrue、IsFalse和IsNull屬性來檢查 SqlBoolean 類型的值。
作業、函式和NULL值
所有算術運算元(+、-、*、/、%)位運算元(~、&、 和 |),如果 SqlType 的任何操作數或自變數都是 NULL,則大多數函式都會傳回 NULL。 IsNull 屬性一律會傳回 true 或 false 值。
精確度
.NET Framework CLR 中的十進位數據類型與 SQL Server 中的數值和十進位數據類型的最大值不同。 此外,在 .NET Framework CLR 十進位數據類型中,會假設最大有效位數。 不過,在 SQL Server 的 CLR 中, SqlDecimal 提供與 SQL Server 中十進位數據類型相同的最大有效位數和小數位數,以及相同的語意。
溢位偵測
在 .NET Framework CLR 中,新增兩個非常大的數位可能不會擲回例外狀況。 相反地,如果沒有使用檢查運算符,傳回的結果可能會「包裝」為負整數。 在 System.Data.SqlTypes 中,會針對所有溢位和下溢錯誤以及零除錯誤擲回例外狀況。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應