SQL CASE te permite manipular una base de datos co­n­su­l­ta­n­do de­te­r­mi­na­das co­n­di­cio­nes y mostrando los re­su­l­ta­dos. Esta condición funciona de manera similar a la es­tru­c­tu­ra If-then-else de otros lenguajes de pro­gra­ma­ción.

¿Qué es SQL CASE?

La in­s­tru­c­ción If-then-else es bastante habitual en muchos lenguajes de pro­gra­ma­ción y bases de datos. Se encarga de ejecutar una acción mientras se cumpla una de­te­r­mi­na­da condición. Si deja de cumplirse, el programa co­rre­s­po­n­die­n­te sale del bucle o ejecuta otra acción. El lenguaje de consultas es­tru­c­tu­ra­das utiliza un principio similar y ofrece la in­s­tru­c­ción SQL CASE, que evalúa una lista de co­n­di­cio­nes y devuelve un valor es­pe­cí­fi­co si se cumple alguna de las co­n­di­cio­nes. 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.

Se­r­vi­do­res virtuales (VPS)
VPS rentables en se­r­vi­do­res Dell En­te­r­pri­se
  • 1 Gb/s de ancho de banda y tráfico ilimitado
  • 99,99 % de tiempo de actividad y ce­r­ti­fi­ca­ción ISO
  • Soporte 24/7 ga­la­r­do­na­do y asesor personal

Sintaxis y fu­n­cio­na­mie­n­to

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 es­pe­ci­fi­ca 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 es­pe­ci­fi­ca­do. 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 co­n­ti­nua­ción una tabla sencilla llamada “lista de clientes”. En ella se in­tro­du­cen 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 su­pe­rio­res a 400 dólares, se muestra un texto es­pe­cí­fi­co, lo que también se aplica justo después a los importes in­fe­rio­res a 400 dólares. La cláusula ELSE se utiliza para los pedidos que sean exac­ta­me­n­te de 400 dólares. Como puedes ver, es posible consultar varias co­n­di­cio­nes de manera co­n­se­cu­ti­va. 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 exac­ta­me­n­te 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

Co­m­bi­na­ción con otras in­s­tru­c­cio­nes

También puedes consultar las co­n­di­cio­nes dentro de otras in­s­tru­c­cio­nes. A co­n­ti­nua­ción, se organizan las entradas por número de cliente. Si no está es­pe­ci­fi­ca­do (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 po­si­bi­li­dad de elegir entre MSSQL, MySQL o MariaDB. Obtén un re­n­di­mie­n­to ex­ce­p­cio­nal y be­ne­fí­cia­te de una sólida ar­qui­te­c­tu­ra de seguridad y un ase­so­ra­mie­n­to pe­r­so­na­li­za­do.

Ir al menú principal