¡Qué útil es la función coalesce!

Es frecuente ver cómo recurrís a usar una estructura case cuando tratáis de evitar que aparezca un valor null en un select y, en su lugar, queréis ver una leyenda alternativa como "valor no disponile". En estos casos es mejor recurrir a la función coalesce. Aquí tenéis un ejemplo:

La función coalesce recibe como argumentos una serie de valores y devuelve el primero que no sea nulo. Esto se usa mucho para escribir valores alternativos cuando el valor de un campo o expresión es nulo. Por ejemplo:

coalesce(jefe, 'El empleado no tiene jefe')

Si el valor del campo jefe es diferente de null, se verá su valor; pero si es null, se verá la leyenda El empleado no tiene jefe.

Como decíamos, a menudo os olvidáis de la existencia de esta función y recurrís a case. Por ejemplo: supongamos que queremos calcular la media de unos salarios, pero si no hay datos (la media valdría null) poner la leyenda “Sin datos” en vez de null. Lo siguiente, aunque correcto, es un poco complicado:

MEJORABLE
case 
  when avg(salario) is null then 'Sin datos' 
  else avg(salario) 
end

Queda mucho más limpio y conciso lo siguiente, que usa la función coalesce:

BIEN
coalesce(avg(salario), 'Sin datos')

Puedes leer más sobre usos inadecuados de la estructura case en esta entrada del blog.

No hay comentarios:

Publicar un comentario