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


Допустимость значений NULL и трехзначная логика сравнения

Применимо к:SQL Server

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

Значения NULL

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

Значения NULL влияют на результаты сравнений. При сравнении двух значений x и y, если x или y имеет значение NULL, то результатом некоторых логических сравнений будет значение UNKNOWN, а не TRUE или FALSE.

Тип данных SqlBoolean

Пространство имен System.Data.SqlTypes представляет тип SqlBoolean для представления этой логики 3-значений. Сравнения между любыми 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 исключения создаются для всех ошибок переполнения и переполнения, а также ошибок деления на ноль.

См. также

Типы данных SQL Server в платформе .NET Framework