MySQL CASE Expression: Guía Completa con Ejemplos Prácticos
La expresión CASE en MySQL es una herramienta poderosa que permite implementar lógica condicional dentro de tus consultas SQL. Esencialmente, te permite crear «ifs» y «elses» dentro de tu código SQL, lo que te da un mayor control sobre cómo se procesan los datos. Esto es especialmente útil cuando necesitas realizar acciones diferentes según el valor de una columna o una condición específica.
En este artículo, te guiaremos a través del funcionamiento de la expresión CASE en MySQL, explicando sus dos tipos principales: Simple CASE y Searched CASE, junto con ejemplos prácticos para que puedas entender cómo usarlas en tus propias consultas.
Tipos de Expresiones CASE
1. Simple CASE
La expresión Simple CASE es la más sencilla de las dos. Compara un valor específico (el «valor de prueba») con los valores especificados en cada cláusula WHEN. Si el «valor de prueba» coincide con un valor WHEN, se devuelve el resultado asociado a ese WHEN. Si no hay coincidencia, se devuelve el resultado del ELSE (si existe) o NULL.
Sintaxis:
sql
CASE valor_de_prueba
WHEN valor1 THEN resultado1
WHEN valor2 THEN resultado2
...
ELSE resultado_else
END
Ejemplo:
sql
SELECT
nombre,
CASE departamento
WHEN 'IT' THEN 'Tecnología de la Información'
WHEN 'HR' THEN 'Recursos Humanos'
WHEN 'MKT' THEN 'Marketing'
ELSE 'Otro Departamento'
END AS nombre_departamento
FROM estudiantes;
En este ejemplo, la expresión CASE toma el valor de la columna «departamento» como «valor de prueba». Si «departamento» es ‘IT’, se devuelve ‘Tecnología de la Información’, si es ‘HR’, se devuelve ‘Recursos Humanos’, y así sucesivamente. Si «departamento» no coincide con ninguno de los WHEN, se devuelve ‘Otro Departamento’.
2. Searched CASE
La expresión Searched CASE evalúa condiciones dentro de cada cláusula WHEN. Si la condición es verdadera, se devuelve el resultado asociado a ese WHEN. Si ninguna condición es verdadera, se devuelve el resultado del ELSE (si existe) o NULL.
Sintaxis:
sql
CASE
WHEN condición1 THEN resultado1
WHEN condición2 THEN resultado2
...
ELSE resultado_else
END
Ejemplo:
sql
SELECT
nombre,
CASE
WHEN edad >= 18 THEN 'Adulto'
WHEN edad >= 13 THEN 'Adolescente'
ELSE 'Niño'
END AS rango_edad
FROM estudiantes;
En este ejemplo, la expresión CASE evalúa las condiciones dentro de cada WHEN. Si «edad» es mayor o igual que 18, se devuelve ‘Adulto’. Si «edad» es mayor o igual que 13 pero menor que 18, se devuelve ‘Adolescente’. De lo contrario, se devuelve ‘Niño’.
Usos de la Expresión CASE en MySQL
Las expresiones CASE tienen una amplia gama de aplicaciones en MySQL, ya que te permiten personalizar el comportamiento de tus consultas. Algunos de los usos más comunes incluyen:
- Creación de columnas calculadas: Puedes usar CASE para generar nuevas columnas basadas en condiciones específicas. Por ejemplo, puedes crear una columna llamada «rango_edad» que clasifique a los estudiantes como niños, adolescentes o adultos, como en el ejemplo anterior.
- Filtrado de datos: La expresión CASE también se puede utilizar en la cláusula WHERE para filtrar datos basados en condiciones complejas. Por ejemplo, puedes filtrar estudiantes que sean mayores de edad y estén en el departamento de ‘IT’.
- Ordenación de datos: Puedes usar CASE en la cláusula ORDER BY para ordenar los datos de acuerdo a condiciones específicas. Por ejemplo, puedes ordenar los estudiantes primero por su departamento y luego por su nombre dentro de cada departamento.
- Agrupación de datos: La expresión CASE también se puede utilizar en la cláusula GROUP BY para agrupar datos de acuerdo a condiciones específicas. Por ejemplo, puedes agrupar estudiantes por rango de edad y luego contar el número de estudiantes en cada grupo.
Consejos para Usar la Expresión CASE
- Simplifica las condiciones: Aunque puedes usar CASE para condiciones complejas, es mejor mantenerlas simples y fáciles de leer. Si tienes una condición muy compleja, considera dividirla en múltiples CASE o usar funciones de comparación para simplificar el código.
- Utiliza CASE en la cláusula SELECT: En general, es mejor usar CASE en la cláusula SELECT para calcular nuevos valores o generar columnas calculadas. Esto facilita la lectura del código y la comprensión de lo que está sucediendo.
- Ten cuidado con el orden de los WHEN: El orden de las cláusulas WHEN es importante. La primera condición que se cumple se devuelve, incluso si hay otras condiciones que también se cumplen.
- Utiliza ELSE o NULL: Siempre debes incluir una cláusula ELSE o devolver NULL si ninguna condición se cumple. Esto evitará resultados inesperados y te ayudará a manejar todos los posibles valores.
Ejemplos Avanzados
Ejemplo 1: Calculando el Impuesto
Imagina que tienes una tabla de ventas con la columna «precio» y la columna «descuento». Puedes usar la expresión CASE para calcular el impuesto sobre la base del precio final (precio menos descuento):
sql
SELECT
precio,
descuento,
CASE
WHEN precio <= 100 THEN precio * 0.05
WHEN precio <= 200 THEN precio * 0.10
ELSE precio * 0.15
END AS impuesto
FROM ventas;
Este ejemplo calcula el impuesto según el rango de precios. Si el precio es menor o igual a 100, el impuesto es del 5%. Si el precio es menor o igual a 200, el impuesto es del 10%. De lo contrario, el impuesto es del 15%.
Ejemplo 2: Clasificando Productos por Categoría
Supongamos que tienes una tabla de productos con la columna «nombre» y la columna «categoria». Puedes usar la expresión CASE para clasificar los productos en diferentes categorías:
sql
SELECT
nombre,
categoria,
CASE
WHEN categoria = 'Electronics' THEN 'Electronics & Gadgets'
WHEN categoria IN ('Clothes', 'Shoes') THEN 'Fashion'
ELSE 'Other'
END AS categoria_clasificada
FROM productos;
Este ejemplo clasifica los productos en tres categorías: «Electronics & Gadgets», «Fashion» y «Other». Los productos que son ‘Electronics’ se clasifican como «Electronics & Gadgets». Los productos que son ‘Clothes’ o ‘Shoes’ se clasifican como «Fashion». Todos los demás productos se clasifican como «Other».
Conclusiones
La expresión CASE es una herramienta poderosa en MySQL que te permite implementar lógica condicional en tus consultas SQL. Es versátil, fácil de usar y ofrece una gran flexibilidad para manipular datos y obtener resultados personalizados. Al dominar la expresión CASE, puedes crear consultas más complejas y eficientes, lo que te permitirá obtener información valiosa de tus datos de una manera más precisa y efectiva.
Recuerda explorar las diversas aplicaciones de la expresión CASE y experimentar con ejemplos prácticos para comprender mejor su utilidad en diferentes escenarios.
Recomendaciones para la Búsqueda:
- «case when mysql«
- «case mysql«
- «mysql case«