Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Expresión CASE de MySQL

La expresión `CASE` en MySQL se utiliza para la lógica condicional en las consultas SQL, permitiéndote devolver valores específicos en función de diferentes condiciones. Funciona de forma similar a una sentencia if-else en los lenguajes de programación.

Utilización

La expresión `CASE` se utiliza para ejecutar lógica condicional en las consultas SQL, principalmente en las cláusulas `SELECT`, `UPDATE` y `ORDER BY`. Evalúa las condiciones en orden y devuelve un valor especificado cuando se encuentra la primera condición verdadera.


CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE resultN
END;

En esta sintaxis, `CASE` comprueba cada condición secuencialmente y devuelve el resultado correspondiente a la primera condición verdadera; si ninguna es verdadera, devuelve el resultado `ELSE`.

Ejemplos

1. Uso básico del caso


SELECT product_name,
       CASE
           WHEN stock_quantity > 0 THEN 'In Stock'
           ELSE 'Out of Stock'
       END AS stock_status
FROM products;

Este ejemplo evalúa la `cantidad_de_stock` y devuelve `En Stock` si la cantidad es mayor que cero, en caso contrario `Sin Stock`.

2. Afecciones múltiples


SELECT employee_name,
       CASE
           WHEN salary > 50000 THEN 'High Salary'
           WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium Salary'
           ELSE 'Low Salary'
       END AS salary_category
FROM employees;

En esta consulta, la expresión `CASE` categoriza a los empleados en bandas salariales, ofreciendo un control más granular sobre las etiquetas de salida.

3. Uso de CASE en ORDER BY


SELECT order_id, order_date
FROM orders
ORDER BY
    CASE
        WHEN order_status = 'Pending' THEN 1
        WHEN order_status = 'Shipped' THEN 2
        ELSE 3
    END;

Aquí, la expresión `CASE` se utiliza para ordenar los resultados en función de `estado_pedido`, dando prioridad a "Pendiente", seguido de "Enviado" y, a continuación, a cualquier otro estado.

4. Utilizar CASE en UPDATE


UPDATE employees
SET salary_category = 
    CASE
        WHEN salary > 50000 THEN 'High Salary'
        WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium Salary'
        ELSE 'Low Salary'
    END;

Este ejemplo muestra cómo se puede utilizar `CASE` en una sentencia `UPDATE` para establecer el campo `salary_category` en función de diferentes rangos salariales.

Consejos y buenas prácticas

  • Garantiza la integridad. Incluye siempre una cláusula `ELSE` para tratar los casos inesperados o nulos, mejorando la solidez de la consulta.
  • Simplifica las condiciones. Simplifica las condiciones dentro de `CASE` para mantener la legibilidad y reducir los errores.
  • Utiliza tipos de datos adecuados. Asegúrate de que los tipos de datos de los resultados en las cláusulas `THEN` y `ELSE` son coherentes para evitar errores.
  • Optimiza el rendimiento. Coloca primero las condiciones verdaderas más probables para minimizar el tiempo de evaluación y mejorar el rendimiento de la consulta.
  • Normas SQL. La expresión `CASE` de MySQL se adhiere a los estándares SQL, garantizando la compatibilidad entre diferentes bases de datos SQL.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis