Índice
0. Introducción1. Problema
2. Solución
3. Discusión de la Solución
4. Práctica: Código T-SQL
5. Conclusiones
6. Glosario
7. Literatura & Enlaces
0. Introducción
Damos inicio a la tercera serie de recetas T-SQL. En esta serie nos centraremos en conocer y llevar a la práctica el tratamiento de valores NULL. En general, un valor NULL es sinónimo de la ausencia o desconocimiento de un dato, y es importante manejar este concepto debido a que puede afectar la codificación de consultas, procedimientos almacenados, y otro tipo de construcciones T-SQL. Veremos que las operaciones aritméticas y lógicas se afectan por la presencia de este tipo de valores; por ejemplo:
NULL + 10 = NULL
NULL OR TRUE = NULL
NULL OR FALSE = NULL
A lo largo de la preparación de estas recetas T-SQL aprenderemos que T-SQL ofrece una variedad de funciones diseñadas para tratar valores NULL.
En esta primera receta T-SQL aprenderemos cómo reemplazar el valor NULL por cualquier otro alternativo conveniente para una lógica específica. Empezaremos con la función ISNULL.
1. Problema
Reemplazar los valores NULL de una consulta por un valor alternativo.
2. Solución
T-SQL provee la función ISNULL para comprobar si una expresión contiene el valor NULL.
3. Discusión de la Solución
La función ISNULL [2] reemplaza el valor NULL por un valor específico. Esta es su sintaxis de uso:
ISNULL ( check_expression , replacement_value )
Descripción de argumentos:
check_expression
: Expresión a comprobar su nulabilidad. Cualquier tipo de expresión.replacement_value
: Expresión de retorno que reemplaza el valor NULL.
Hay que tener en cuenta:
"replacement_value
must be of a type that is implicitly convertible to the type ofcheck_expression
."
Por ejemplo:
SELECT ISNULL(CAST(NULL AS INT), 'Cadena de caracteres');
Conversion failed when converting the varchar value 'Cadena de caracteres' to data type int.
Ejemplo de uso:
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
SELECT ISNULL(CAST(NULL AS INT), 'Cadena de caracteres');
generará el mensaje de error:
Conversion failed when converting the varchar value 'Cadena de caracteres' to data type int.
Ejemplo de uso:
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
Con esta expresión calculamos el promedio del peso de todos los productos. En caso de que la columna Weight contenga el valor NULL, se reemplazará por el valor entero 50.
4. Práctica: Código T-SQL
Escribamos un ejemplo T-SQL un poco más complejo que el anterior: validemos si una expresión que corresponde con el código de aprobación de tarjeta de crédito es igual a NULL, de ser así, se mostrará el mensaje "***No aprobado***".
SELECT h.SalesOrderID,
h.CreditCardApprovalCode,
CreditApprovalCode_Display = ISNULL(h.CreditCardApprovalCode,
'***NO APROBADO***')
FROM Sales.SalesOrderHeader h;
Cuando ejecutemos esta sentencia en Microsoft SQL Management Studio, obtendremos el siguiente resultado:
Figura 1. Reemplazo de NULL por ***NO APROBADO***. |
5. Conclusiones
La validación de valores NULL es una tarea que debe comprobarse cuando escribimos consultas, procedimientos almacenados, o cualquier otra expresión T-SQL. Aprendimos que esto es posible a través de la función ISNULL. Hacer esta validación nos lleva a crear una lógica más robusta contra posibles comportamientos extraños generados por la aparición de valores NULL.
6. Glosario
- Consulta
- Expresión
- Lógica
- NULL
- Procedimiento almacenado
- T-SQL
7. Literatura & Enlaces
[1]: SQL Server 2012 T-SQL Recipes - A Problem-Solucion Approach by Jason Brimhall, David Dye, Jonathan Gennick, Andy Roberts, and Wayne Sheffield. Copyright 2012 Jason Brimhall, David Dye, Jonathan Gennick, Andy Roberts, and Wayne Sheffield, 978-1-4302-4200-0.[2]: ISNULL (Transact-SQL) - https://msdn.microsoft.com/en-us/library/ms184325.aspx
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.