Pular para o conteúdo principal
Documentos
FunçõesExpressõesKeywordsDeclaraçõesCláusulas

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.

Aprimoramento de SQL para iniciantes

Adquira as habilidades de SQL para interagir com seus dados e consultá-los.
Comece a aprender de graça