共用方式為


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、IsFalseIsNull屬性來檢查 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 中,會針對所有溢位和下溢錯誤以及零除錯誤擲回例外狀況。

另請參閱

.NET Framework 中的 SQL Server 數據類型