domingo, 19 de julio de 2015

Receta T-SQL No. 3-1: Reemplazar NULL por un Valor Alternativo

Índice

0. Introducción
1. 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 of check_expression."
Por ejemplo:

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:
Reemplazo de NULL por NO APROBADO
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.