SQL CASE: configurar y consultar condiciones

SQL CASE te permite manipular una base de datos consultando determinadas condiciones y mostrando los resultados. Esta condición funciona de manera similar a la estructura If-then-else de otros lenguajes de programación.

¿Qué es SQL CASE?

La instrucción If-then-else es bastante habitual en muchos lenguajes de programación y bases de datos. Se encarga de ejecutar una acción mientras se cumpla una determinada condición. Si deja de cumplirse, el programa correspondiente sale del bucle o ejecuta otra acción. El lenguaje de consultas estructuradas utiliza un principio similar y ofrece la instrucción SQL CASE, que evalúa una lista de condiciones y devuelve un valor específico si se cumple alguna de las condiciones. Si no se cumple ninguna, devuelve un valor definido bajo ELSE. Si no hay una cláusula ELSE y ninguna condición se cumple, el resultado es NULL.

Servidores virtuales VPS
Virtualización completa con acceso root
  • Ancho de banda de hasta 1 Gb/s y tráfico ilimitado
  • Almacenamiento SSD NVMe ultrarrápido
  • Incluye: edición Plesk Web Host

Sintaxis y funcionamiento

La sintaxis básica de SQL CASE tiene el siguiente aspecto:

SELECT columna1, columna2, …,
CASE
	WHEN condición1 THEN resultado1
END AS nombre
FROM nombre_tabla;
sql

Mediante el comando SQL SELECT se especifica qué columnas deben tenerse en cuenta. CASE se utiliza para evaluar la condición. Si la condición se cumple (es decir, si es verdadera), se devuelve el valor del resultado especificado. END AS finaliza el bucle y FROM indica en qué tabla se debe ejecutar este bucle.

También es posible utilizar la cláusula ELSE, con la que la sintaxis tendría este aspecto:

SELECT columna1, columna2, …,
CASE
	WHEN condición1 THEN resultado1
	ELSE otro_resultado
END AS nombre
FROM nombre_tabla;
sql

Ejemplo de condición

Para explicar cómo funciona SQL CASE, se ha creado a continuación una tabla sencilla llamada “lista de clientes”. En ella se introducen un número de cliente, apellido del cliente, su ubicación, la fecha en la que se realiza el pedido, la cantidad de artículos del pedido y el importe pagado en euros.

Cliente Apellido Ubicación Fecha Artículos Importe total
1427 García Madrid 13/1/2024 14 634
1377 Sánchez Málaga 19/1/2024 9 220
1212 Pérez Málaga 3/1/2024 15 400
1431 Martín Sevilla 19/1/2024 22 912
1118 Moreno Barcelona 1/2/2024 10 312

Ahora se utiliza la condición para evaluar toda la lista. Para los importes totales superiores a 400 euros, se muestra un texto específico, lo que también se aplica justo después a los importes inferiores a 400 euros. La cláusula ELSE se utiliza para los pedidos que sean exactamente de 400 euros. Como puedes ver, es posible consultar varias condiciones de manera consecutiva. La sintaxis de nuestro ejemplo es la siguiente:

SELECT Cliente, Apellido, Ubicación, Fecha, Artículos, Importe total
CASE
	WHEN Importe total> 400 THEN 'El valor de la compra supera los 400 €'
	WHEN Gesamtbetrag < 400 THEN 'El valor de la compra es menor a 400 €'
	ELSE 'El valor de la compra es exactamente 400 €'
END AS Detalles del pedido
FROM Lista de clientes;
sql

El resultado tiene este aspecto:

Cliente Apellido Ubicación Fecha Artículos Importe total Detalles del pedido
1427 García Madrid 1/13/2024 14 634 El valor de la compra supera los 400 €
1377 Sánchez Málaga 1/19/2024 9 220 El valor de la compra es menor a 400 €
1212 Pérez Málaga 1/3/2024 15 400 El valor de la compra es exactamente 400 €
1431 Martín Sevilla 1/19/2024 22 912 El valor de la compra supera los 400 €
1118 Moreno Barcelona 2/1/2024 10 312 El valor de la compra es menor a 400 €

Combinación con otras instrucciones

También puedes consultar las condiciones dentro de otras instrucciones. A continuación, se organizan las entradas por número de cliente. Si no está especificado (es decir, es NULL), se tendrá en cuenta en su lugar el nombre del cliente. Fíjate en este código:

SELECT Cliente, Apellido, Ubicación, Fecha, Artículo, Importe total
FROM Lista de clientes
ORDER BY
(CASE
		WHEN Cliente NULL THEN Apellido
		ELSE Cliente
END);
sql

Se obtiene este resultado:

Cliente Apellido Ubicación Fecha Artículos Importe total
1118 Moreno Barcelona 2/1/2024 10 312
1212 Pérez Málaga 3/1/2024 15 400
1377 Sánchez Málaga 19/1/2024 9 220
1427 García Madrid 13/1/2024 14 634
1431 Martín Sevilla 19/1/2024 22 912
Consejo

Con el Hosting SQL Server de IONOS tienes la posibilidad de elegir entre MSSQL, MySQL o MariaDB. Obtén un rendimiento excepcional y benefíciate de una sólida arquitectura de seguridad y un asesoramiento personalizado.

¿Le ha resultado útil este artículo?
Page top