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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de