lunes, 20 de julio de 2015

Receta T-SQL No. 3-2: Cómo Retornar el Primer Valor No Nulo de una Lista

Índice

0. Introducción
1. Problema
2. Solución
3. Discusión
4. Práctica: Código T-SQL
5. Conclusiones
6. Glosario
7. Literatura & Enlaces

0. Introducción

En esta segunda receta T-SQL de manejo de valores NULL, aprenderemos a obtener el primer valor no NULL de una lista. Usaremos la función COALESCE para alcanzar este cometido. Veremos cómo podemos especificar un valor alternativo a NULL cuando todas las expresiones en COALESCE generan valores NULL.

1. Problema

Contamos con una lista que podría contener valores NULL. Requerimos obtener el primer valor no NULL de esta lista.

2. Solución

Transact-SQL cuenta con la función COALESCE para evaluar una lista de valores y obtener el primer valor no NULL.

3. Discusión de la Solución

Sintaxis de la función COALESCE [1]

COALESCE ( expression [ ,...n ] )

Esta función acepta como parámetro una expresión de cualquier tipo. El valor retornado corresponde con el primer valor no NULL de la expresión (e.g., lista). En caso de que todos los valores de la lista se evalúen en NULL, el valor retornado será NULL.


Ejemplo de uso


SELECT Name, Class, Color, ProductNumber,
COALESCE(Class, Color, ProductNumber) as 'PrimerNoNULL'
FROM Production.Product;


Con esta consulta T-SQL mostramos el nombre, clase, número de producto, además del primer valor no NULL de estos tres por cada registro.

Cuando ejecutamos este código en Microsoft SQL Server Management Studio usando la base de datos AdventureWorks2012 obtenemos el siguiente resultado:
Primer valor no NULL
Figura 1. Primer valor no NULL.

4. Práctica: Código T-SQL

Escribamos una consulta de ejemplo un poco más compleja que la anterior:

En este ejemplo usamos el operador de unión de tablas JOIN con la variante LEFT OUTER para recuperar los números de teléfonos de una persona ya sea desde la tabla Person o desde la tabla SalesPerson. De los dos números se mostrará el primer valor no NULL; en caso de que ambos sean NULL se asignará el mensaje SIN TELÉFONO.

Ejecutamos esta sentencia en Microsoft SQL Server Management Studio y obtenemos:
Primer valor no NULL
Figura 2. Primer valor no NULL.

5. Conclusiones

Hemos estudiado la función T-SQL COALESCE; función útil retornar el primer valor no NULL de una expresión. Reconocemos su utilidad para el tratamiento de valores NULL en expresiones que de lo contrario podrían generar resultados inesperados al contrastar cualquier otro valor con NULL.


En la próxima receta T-SQL haremos una comparción entre ISNULL y COALESCE.

6. Glosario

  • Expresión
  • Lista
  • NULL
  • T-SQL

7. Literatura & Enlaces

[1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.
[2]: COALESCE (Transact-SQL) - https://msdn.microsoft.com/en-us/library/ms190349.aspx


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.