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.
- 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;
sqlMediante 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;
sqlEjemplo 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;
sqlEl 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);
sqlSe 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 |
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.