Em sistemas de gerenciamento de banco de dados relacionais, como SQL (Structured Query Language), a execução de instruções condicionais é uma parte essencial para manipular dados de forma eficaz e precisa. Uma maneira comum de realizar isso é através de estruturas de controle de fluxo, como o CASE.
O CASE é uma expressão condicional que permite executar diferentes ações com base em condições específicas. Essa construção pode ser utilizada em consultas SQL para realizar diversas operações condicionais.
A sintaxe básica do CASE em SQL é a seguinte:
sqlCASE
WHEN condição1 THEN resultado1
WHEN condição2 THEN resultado2
...
ELSE resultado_padrao
END
Aqui está uma explicação detalhada dos elementos dessa sintaxe:
CASE: Indica o início da construção CASE.WHEN condição THEN resultado: Define uma condição a ser testada e o resultado a ser retornado caso essa condição seja verdadeira.ELSE resultado_padrao: Define o resultado a ser retornado se nenhuma das condições anteriores for verdadeira (opcional).END: Indica o fim da construção CASE.
Vamos agora explorar alguns exemplos de como o CASE pode ser utilizado em SQL para executar instruções condicionais:
- Exemplo simples de CASE:
Suponha que temos uma tabela de funcionários com informações sobre seus salários. Queremos classificar os funcionários em diferentes categorias salariais com base em seus salários. Podemos usar o CASE para isso:
sqlSELECT
Nome,
Salario,
CASE
WHEN Salario <= 1000 THEN 'Baixo'
WHEN Salario > 1000 AND Salario <= 2000 THEN 'Médio'
ELSE 'Alto'
END AS 'Categoria Salarial'
FROM Funcionarios;
Neste exemplo, estamos classificando os funcionários em categorias salariais com base nos valores de seus salários.
- Exemplo de CASE com múltiplas condições:
Podemos usar várias condições em uma construção CASE para executar ações diferentes com base em diferentes critérios. Por exemplo, vamos considerar uma tabela de produtos e queremos atribuir uma etiqueta de disponibilidade com base em seu estoque:
sqlSELECT
NomeProduto,
Estoque,
CASE
WHEN Estoque > 0 THEN 'Disponível'
WHEN Estoque <= 0 THEN 'Indisponível'
ELSE 'Erro'
END AS 'Status de Estoque'
FROM Produtos;
Neste caso, estamos atribuindo uma etiqueta de disponibilidade aos produtos com base no valor de seu estoque.
- Exemplo de CASE aninhado:
O CASE também pode ser aninhado dentro de outras construções CASE para lidar com condições mais complexas. Por exemplo, vamos considerar uma tabela de alunos e queremos atribuir uma classificação com base em suas notas finais:
sqlSELECT
NomeAluno,
NotaFinal,
CASE
WHEN NotaFinal >= 9.5 THEN 'A'
WHEN NotaFinal >= 8.5 AND NotaFinal < 9.5 THEN 'B'
WHEN NotaFinal >= 7.0 AND NotaFinal < 8.5 THEN 'C'
ELSE
CASE
WHEN NotaFinal >= 6.0 AND NotaFinal < 7.0 THEN 'D'
ELSE 'F'
END
END AS 'Classificação'
FROM Alunos;
Neste exemplo, estamos atribuindo uma classificação aos alunos com base em suas notas finais, utilizando um CASE aninhado para lidar com diferentes faixas de notas.
Em resumo, o CASE é uma poderosa construção em SQL que permite executar instruções condicionais em consultas, facilitando a manipulação e análise de dados com base em critérios específicos. Ele pode ser utilizado de várias maneiras para atender às necessidades de diferentes situações de modelagem de dados.
“Mais Informações”

Certamente! Vamos expandir ainda mais sobre o uso do CASE em SQL, explorando diferentes cenários e técnicas avançadas para aproveitar ao máximo essa construção.
- CASE com expressões condicionais mais complexas:
Além das comparações simples, o CASE em SQL também pode lidar com expressões condicionais mais complexas, incluindo operadores lógicos e aritméticos. Por exemplo, podemos utilizar funções e operadores matemáticos dentro das condições do CASE. Suponha que queremos classificar os funcionários com base em seus salários, mas queremos considerar também a sua posição na empresa:
sqlSELECT
Nome,
Salario,
Cargo,
CASE
WHEN Salario <= 1000 AND Cargo = 'Assistente' THEN 'Baixo'
WHEN Salario > 1000 AND Salario <= 2000 AND Cargo = 'Analista' THEN 'Médio'
ELSE 'Alto'
END AS 'Categoria Salarial'
FROM Funcionarios;
Neste exemplo, estamos considerando tanto o salário quanto o cargo do funcionário para determinar a categoria salarial.
- Utilização do CASE em cláusulas WHERE e HAVING:
Além de ser usado na lista de seleção de uma consulta (SELECT), o CASE também pode ser aplicado em cláusulas WHERE e HAVING para filtrar dados com base em condições específicas. Por exemplo, podemos filtrar os resultados da consulta com base em categorias salariais:
sqlSELECT
Nome,
Salario
FROM Funcionarios
WHERE
CASE
WHEN Salario <= 1000 THEN 'Baixo'
WHEN Salario > 1000 AND Salario <= 2000 THEN 'Médio'
ELSE 'Alto'
END = 'Baixo';
Neste caso, estamos selecionando apenas os funcionários com salários classificados como “Baixo”.
- Utilização do CASE em cláusulas ORDER BY:
O CASE também pode ser usado na cláusula ORDER BY para ordenar os resultados de uma consulta com base em critérios condicionais. Por exemplo, vamos ordenar os funcionários com base em suas categorias salariais:
sqlSELECT
Nome,
Salario
FROM Funcionarios
ORDER BY
CASE
WHEN Salario <= 1000 THEN 'Baixo'
WHEN Salario > 1000 AND Salario <= 2000 THEN 'Médio'
ELSE 'Alto'
END DESC;
Neste exemplo, estamos ordenando os funcionários de forma decrescente com base em suas categorias salariais.
- CASE com valores NULL:
É importante considerar como o CASE trata valores NULL. Em SQL, o CASE trata valores NULL como desconhecidos e pode não produzir o resultado esperado se não forem tratados adequadamente. Podemos usar a cláusula ELSE para lidar com valores NULL ou especificar condições adicionais para tratá-los adequadamente.
sqlSELECT
Nome,
Salario,
CASE
WHEN Salario IS NULL THEN 'Salário não informado'
WHEN Salario <= 1000 THEN 'Baixo'
WHEN Salario > 1000 AND Salario <= 2000 THEN 'Médio'
ELSE 'Alto'
END AS 'Categoria Salarial'
FROM Funcionarios;
Neste exemplo, estamos tratando explicitamente o caso em que o salário é NULL, atribuindo uma categoria adequada para esse cenário.
- CASE em atualizações e inserções:
O CASE também pode ser utilizado em instruções de atualização (UPDATE) e inserção (INSERT) para modificar ou atribuir valores com base em condições específicas. Por exemplo, suponha que queremos atualizar a tabela de funcionários para atribuir um bônus aos que têm um desempenho excepcional:
sqlUPDATE Funcionarios
SET Bônus =
CASE
WHEN Desempenho >= 90 THEN 1000
WHEN Desempenho >= 80 AND Desempenho < 90 THEN 500
ELSE 0
END;
Neste exemplo, estamos atribuindo diferentes valores de bônus com base no desempenho de cada funcionário.
Essas são apenas algumas das muitas maneiras pelas quais o CASE pode ser utilizado em SQL para realizar operações condicionais e manipular dados de forma flexível e eficaz. Com uma compreensão sólida dessa construção e sua aplicação em consultas SQL, os desenvolvedores podem realizar uma ampla gama de tarefas de modelagem e análise de dados de maneira eficiente.

