Compartir a través de


Nulabilidad y comparaciones lógicas de tres valores

Se aplica a: SQL Server

Si está familiarizado con los tipos de datos de SQL Server, encontrará una semántica y precisión similares en el espacio de nombres System.Data.SqlTypes en .NET Framework. No obstante, existen algunas diferencias, y en este tema se describen las más importantes.

Valores NULL

Una diferencia principal entre los tipos de datos nativos de Common Language Runtime (CLR) y los tipos de datos de SQL Server es que el primero no permite valores NULL, mientras que el último proporciona semántica completa de NULL.

Los valores NULL afectan a las comparaciones. Al comparar dos valores x e y, si alguno de los dos es NULL, hay una serie de comparaciones lógicas que se evalúan como un valor UNKNOWN en lugar de como True o False.

Tipo de datos SqlBoolean

El espacio de nombres System.Data.SqlTypes presenta un tipo SqlBoolean para representar esta lógica de 3 valores. Las comparaciones entre cualquier tipo SqlTypes devuelven un tipo de valor SqlBoolean . El valor UNKNOWN se representa mediante el valor NULL del tipo SqlBoolean . Las propiedades IsTrue, IsFalse e IsNull se proporcionan para comprobar el valor de un tipo SqlBoolean .

Operaciones, funciones y valores NULL

Todos los operadores aritméticos (+, -, *, /, %), operadores bit a bit (~, &y |) y la mayoría de las funciones devuelven NULL si alguno de los operandos o argumentos de SqlTypes es NULL. La propiedad IsNull siempre devuelve un valor true o false.

Precisión

Los tipos de datos decimales de .NET Framework CLR tienen valores máximos diferentes a los de los tipos de datos numéricos y decimales en SQL Server. Además, en los tipos de datos decimales clR de .NET Framework se supone la precisión máxima. Sin embargo, en CLR para SQL Server, SqlDecimal proporciona la misma precisión y escala máximas, y la misma semántica que el tipo de datos decimal en SQL Server.

Detección de desbordamiento

En CLR de .NET Framework, es posible que la adición de dos números muy grandes no produzca una excepción. En lugar de ello, si no se ha utilizado ningún operador de comprobación, el resultado devuelto puede "ajustarse" como un número entero negativo. En System.Data.SqlTypes, se producen excepciones para todos los errores de desbordamiento y subflujo y errores de división por cero.

Consulte también

Tipos de datos de SQL Server en .NET Framework