Expressão CASE do MySQL
A expressão `CASE` no MySQL é usada para lógica condicional em consultas SQL, permitindo que você retorne valores específicos com base em diferentes condições. Funciona de forma semelhante a uma instrução if-else em linguagens de programação.
Uso
A expressão `CASE` é utilizada para executar a lógica condicional em consultas SQL, principalmente nas cláusulas `SELECT`, `UPDATE` e `ORDER BY`. Ele avalia as condições em ordem e retorna um valor especificado quando a primeira condição verdadeira é encontrada.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END;
Nessa sintaxe, o `CASE` verifica cada condição sequencialmente e retorna o resultado correspondente para a primeira condição verdadeira; se nenhuma for verdadeira, ele retorna o resultado `ELSE`.
Exemplos
1. Uso básico de casos
SELECT product_name,
CASE
WHEN stock_quantity > 0 THEN 'In Stock'
ELSE 'Out of Stock'
END AS stock_status
FROM products;
Esse exemplo avalia a `stock_quantity` e retorna 'In Stock' se a quantidade for maior que zero, caso contrário, 'Out of Stock'.
2. Condições múltiplas
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;
Nessa consulta, a expressão `CASE` categoriza os funcionários em faixas salariais, oferecendo um controle mais granular sobre os rótulos de saída.
3. Usando CASE em 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;
Aqui, a expressão `CASE` é usada para ordenar os resultados com base em `order_status`, priorizando 'Pending', seguido de 'Shipped' e depois qualquer outro status.
4. Usando CASE em 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 exemplo mostra como o `CASE` pode ser usado em uma instrução `UPDATE` para definir o campo `salary_category` com base em diferentes faixas salariais.
Dicas e práticas recomendadas
- Garantir a integridade. Sempre inclua uma cláusula `ELSE` para lidar com casos inesperados ou nulos, aumentando a robustez da consulta.
- Mantenha as condições simples. Simplifique as condições no `CASE` para manter a legibilidade e reduzir os erros.
- Use tipos de dados apropriados. Certifique-se de que os tipos de dados dos resultados nas cláusulas `THEN` e `ELSE` sejam consistentes para evitar erros.
- Otimize o desempenho. Coloque as condições verdadeiras mais prováveis primeiro para minimizar o tempo de avaliação e melhorar o desempenho da consulta.
- Padrões SQL. A expressão `CASE` do MySQL segue os padrões SQL, garantindo a compatibilidade entre diferentes bancos de dados SQL.