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 dólares.

Cliente Apellido Ubicación Fecha Artículos Importe total
1427 Santos Nueva York 1/13/2024 14 634
1377 Johnson Chicago 1/19/2024 9 220
1212 Brown Chicago 1/3/2024 15 400
1431 Miller Los Ángeles 1/19/2024 22 912
1118 Davis Dallas 2/1/2024 10 312

Ahora se utiliza la condición para evaluar toda la lista. Para los importes totales superiores a 400 dólares, se muestra un texto específico, lo que también se aplica justo después a los importes inferiores a 400 dólares. La cláusula ELSE se utiliza para los pedidos que sean exactamente de 400 dólares. 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 dólares' 
WHEN Importe total < 400 THEN 'El valor de la compra es menor a 400 dólares' 
ELSE 'El valor de la compra es exactamente 400 dólares' 
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 Santos Nueva York 1/13/2024 14 634 El valor de la compra supera los 400 dólares
1377 Johnson Chicago 1/19/2024 9 220 El valor de la compra es menor a 400 dólares
1212 Brown Chicago 1/3/2024 15 400 El valor de la compra es exactamente 400 dólares
1431 Miller Los Ángeles 1/19/2024 22 912 El valor de la compra supera los 400 dólares
1118 Davis Dallas 2/1/2024 10 312 El valor de la compra es menor a 400 dólares

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 Davis Dallas 2/1/2024 10 312
1212 Brown Chicago 1/3/2024 15 400
1377 Johnson Chicago 1/19/2024 9 220
1427 Santos Nueva York 1/13/2024 14 634
1431 Miller Los Ángeles 1/19/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?
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.
Page top