Mostrando entradas con la etiqueta práctica 1. Mostrar todas las entradas
Mostrando entradas con la etiqueta práctica 1. Mostrar todas las entradas

Abusos de la estructura case de SQL

AUTOR: Mateo Domínguez Gómez

El uso de la estructura CASE en consultas SQL puede ser una herramienta poderosa para obtener diferentes resultados en función de un conjunto de condiciones. Sin embargo, en ocasiones se puede abusar de su uso, lo que puede llevar a código menos eficiente o incluso incorrecto.

En esta entrada, exploraremos tres ejemplos comunes de abuso de la estructura CASE y cómo evitarlos para mejorar la claridad y eficiencia de nuestras consultas.

Usar in te puede ahorrar trabajo

El operador in sirve para comprobar la pertenencia de un valor a un conjunto de valores. Su uso es equivalente a una serie de comparaciones individuales concatenadas con operadores or... pero es mucho más corto de escribir.

Restando fechas: formas de calcular la edad

Es obvio que la edad actual de una persona se calcula restando la fecha del momento y la fecha de nacimiento. Hay varias formas de hacerlo, cada una con una mayor precisión que la anterior. En este artículo vamos a utilizar las funciones para restar fechas y obtener componentes de fechas de MySQL (aquí hay una lista de esas funciones). Para aplicar estas ideas a otros gestores de BD, debes buscar las funciones equivalentes en esos gestores.

Distinct no es una función

Es muy habitual ver consultas que emplean la cláusula distinct como si fuese una función, es decir, encerrando entre paréntesis un campo como si fuese un parámetro de invocación a la función.

Funciones de manipulación de cadenas para extraer la ciudad a partir de la dirección

Es habitual tener un campo con direcciones en tablas de una BD. La dirección puede contener la calle, la ciudad… Esta lección te muestra cómo obtener solo la ciudad a partir de la dirección completa.

Se puede usar case para contar/sumar cosas que cumplan una determinada condición

Aunque la mejor forma de hacer consultas con funciones de agregación (cuenta, suma…) es usando group by, en ocasiones basta con usar una cláusula case dentro de la función de agregación. 

Cuidado con los comodines

Los comodines son útiles cuando queremos hacer comparaciones no exactas. Son sencillos de utilizar, pero con frecuencia se cometen algunos fallos que hay que evitar. Aquí hay algunos ejemplos de fallos habituales.

Cuidado con la preferencia de operadores lógicos

El operador and se evalúa antes que el or. Y si no tienes en cuenta este orden de preferencia puedes cometer errores al escribir condiciones complejas en el where de una consulta SQL.

Ordenar según el valor de expresiones mostradas en el select

Ordenar usando el valor de algún campo es sencillo. Basta con referirse al nombre del campo en la cláusula order by. Pero cuando el criterio de ordenación no es un campo, sino una expresión (con funciones u operadores) encontráis dificultades para referiros en el order by a esa expresión usada en el select. Aquí explicamos algunas formas de hacerlo.

¡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:

Comprobación de no nulo

Los test de nulidad son muy sencillos de usar y escribir, aunque a veces se ven soluciones "imaginativas", que esconden fallos conceptuales graves, como en este caso.