Поделиться через


Сравнение логики null и трехзначных значений

Область применения:SQL Server

Если вы знакомы с типами данных SQL Server, вы найдете аналогичную семантику и точность в пространстве имен System.Data.SqlTypes в .NET Framework. Однако существуют некоторые различия, и в этой статье рассматриваются наиболее важные из этих различий.

Значения NULL

Основное различие между типами данных среды CLR и типами данных SQL Server заключается в том, что первый не допускает NULL значения, а последний предоставляет полную NULL семантику.

Сравнения влияют на значения NULL. При сравнении двух значений x и y, если x или yNULL, то некоторые логические сравнения оцениваются как значение UNKNOWN, а не значение true или false.

Тип данных SqlBoolean

Пространство имен System.Data.SqlTypes представляет тип SqlBoolean для представления этой логики с тремя значениями. Сравнения между любыми SqlTypes возвращают тип значения SqlBoolean. Значение UNKNOWN представлено значением NULL типа SqlBoolean. Свойства IsTrue, IsFalseи IsNull предоставляются для проверки значения типа SqlBoolean.

Операции, функции и значения NULL

Все арифметические операторы (+, -, *, /, %), побитовые операторы (~, &и |), а большинство функций возвращают NULL, если любой из операндов или аргументов SqlTypes имеет значение NULL. Свойство IsNull всегда возвращает значение true или false.

Точность

Типы данных с десятичными значениями в среде CLR .NET Framework отличаются от числовых и десятичных типов данных в SQL Server. Кроме того, в платформа .NET Framework типах десятичных данных CLR предполагается максимальная точность. Однако в среде CLR для SQL Server SqlDecimal обеспечивает ту же максимальную точность и масштаб, а также ту же семантику, что и десятичный тип данных в SQL Server.

Обнаружение переполнения

В среде CLR .NET Framework добавление двух очень больших чисел может не вызвать исключение. Вместо этого, если оператор проверки не используется, возвращаемый результат может обтекать как отрицательное целое число. В System.Data.SqlTypesисключения создаются для всех ошибок переполнения и переполнения, а также ошибок деления на ноль.