La sentencia CASE WHEN en MySQL: Aplicación y Ejemplos Prácticos

En las consultas SQL, la estructura CASE WHEN permite implementar lógica condicional compleja, siendo particularmente eficaz en MySQL. Esta herramienta facilita la toma de decisiones basada en valores de columnas o expresiones booleanas, similar a estructurasif-else en lenguajes de programación. A continuación, se detallan las dos formas principales de uso con ejemplos adaptados.

Casos de uso para la sentencia CASE

1. Forma simple: basada en el valor de una columna

Esta versión compara directamente el valor de una columna con valores específicos predefinidos.

Sintaxis:

CASE columna_expresion
  WHEN valor1 THEN resultado1
  WHEN valor2 THEN resultado2
  ...
  [ELSE valor_predeterminado]
END

Si el valor coincide con alguna condición, se devuelve el resultado correspondiente; de lo contrario, se aplica el ELSE o se retorna NULL si no está definido.

Ejemplo:

SELECT 
    producto_id,
    CASE categoria
        WHEN 'electrónica' THEN 'Tecnología'
        WHEN 'ropa' THEN 'Moda'
        ELSE 'Otros'
    END AS 'grupo_producto'
FROM inventario;

En este caso, se transforman los valores de la columna categoria en etiquetas descriptivas para el conjunto de datos.

2. Forma buscada: basada en condiciones

Esta variante evalúa expresiones booleanas arbitrarias, ofreciendo mayor flexibilidad para lógicas complejas.

Sintaxis:

CASE
  WHEN condición1 THEN resultado1
  WHEN condición2 THEN resultado2
  ...
  [ELSE valor_predeterminado]
END

Ejemplo:

SELECT 
    cliente_id,
    nombre,
    CASE 
        WHEN saldo > 10000 THEN 'Premium'
        WHEN saldo >= 5000 THEN 'Estándar'
        ELSE 'Básico'
    END AS 'tipo_cliente'
FROM cuentas;

Aquí, los clientes se clasifican según rangos de saldo, lo que permite una segmentación dinámica en consultas.

Consideraciones técnicas

  • La sentencia CASE puede anidarse para construir condiciones multinivel.
  • Los valores de resultado pueden ser de cualquier tipo de dato: numérico, cadena, fecha, etc.
  • Después de THEN se pueden incluir expresinoes de cálculo, funciones o incluso subconsultas.
  • Si se omite el cláusula ELSE, el valor resultante será NULL cuando ninguna condición se cumpla.
  • CASE se puede emplear en SELECT, WHERE, ORDER BY, GROUP BY y otras cláusulas que admitan expresiones.

Aplicaciones comunes

Este recurso es útil para tareas como la transformación de datos en tiempo de ejecución, la categorización condicional en informes, el cálculo de métricas personalizadas (por ejemplo, descuentos progresivos o niveles de aprobación) y la implementación de lógicas de seguridad a nivel de fila.

Etiquetas: MySQL SQL CASE WHEN Lógica Condicional Consultas de Base de Datos

Publicado el 6-27 06:05