Oracle – Usando a expressão Case
USANDO A EXPRESSÃO CASE
A expressão CASE executa a lógica if-then-else em SQL .
A expressão CASE funciona de maneira semelhante a DECODE(), mas você deve
usar CASE porque ela é compatível com o padrão ANSI e faz parte do padrão SQL/92. Além disso,
a expressão CASE é mais fácil de ler. Existem dois tipos de expressões CASE:
? Expressões case simples, que usam expressões para determinar o valor retornado
? Expressões case pesquisadas, que usam condições para determinar o valor retornado
Você vai aprender sobre esses dois tipos de expressões CASE a seguir.
Usando expressões CASE simples
As expressões CASE simples usam expressões incorporadas para determinar o valor a ser retornado.
Elas têm a seguinte sintaxe:
CASE expressão_pesquisa
WHEN expressão1 THEN resultado1
WHEN expressão2 THEN resultado2
…
WHEN expressãoN THEN resultadoN
ELSE resultado_padrão
END
onde
? expressão_pesquisa é a expressão a ser avaliada.
? expressão1, expressão2,…, expressãoN são as expressões a serem avaliadas em
relação à expressão_pesquisa.
? resultado1, resultado2,…, resultadoN são os resultados retornados (um para
cada expressão possível). Se expressão1 for avaliada como expressão_pesquisa, o resultado1
será retornado e do mesmo modo para as outras expressões.
? resultado_padrão é retornado quando nenhuma expressão correspondente é encontrada.
O exemplo a seguir mostra uma expressão CASE simples que retorna os tipos de produto
como nomes:
SELECT product_id, product_type_id, CASE product_type_id WHEN 1 THEN 'Book' WHEN 2 THEN 'Video' WHEN 3 THEN 'DVD' WHEN 4 THEN 'CD' ELSE 'Magazine' END FROM products; PRODUCT_ID PRODUCT_TYPE_ID CASEPROD ---------- --------------- -------- 1 1 Book 2 1 Book 3 2 Video 4 2 Video 5 2 Video 6 2 Video 7 3 DVD 8 3 DVD 9 4 CD 10 4 CD 11 4 CD 12 Magazine
Usando expressões CASE pesquisadas
As expressões CASE pesquisadas utilizam condições para determinar o valor retornado. Elas têm a
seguinte sintaxe:
CASE
WHEN condição1 THEN resultado1
WHEN condição2 THEN resultado2
…
WHEN condiçãoN THEN resultadoN
ELSE resultado_padrão
END
onde
? condição1, condição2,…, condiçãoN são as expressões a serem avaliadas.
? resultado1, resultado2,…, resultadoN são os resultados retornados (um para
cada condição possível). Se condição1 é verdadeira, o resultado1 é retornado e do
mesmo modo para as outras expressões.
? resultado_padrão é retornado quando nenhuma condição retorna verdadeiro.
O exemplo a seguir ilustra o uso de uma expressão CASE pesquisada:
SELECT product_id, product_type_id, CASE WHEN product_type_id = 1 THEN 'Book' WHEN product_type_id = 2 THEN 'Video' WHEN product_type_id = 3 THEN 'DVD' WHEN product_type_id = 4 THEN 'CD' ELSE 'Magazine' END FROM products; PRODUCT_ID PRODUCT_TYPE_ID CASEPROD ---------- --------------- -------- 1 1 Book 2 1 Book 3 2 Video 4 2 Video 5 2 Video 6 2 Video 7 3 DVD 8 3 DVD 9 4 CD 10 4 CD 11 4 CD 12 Magazine Você pode usar operadores em uma expressão CASE pesquisada, como mostra o exemplo a seguir: SELECT product_id, price, CASE WHEN price > 15 THEN 'Expensive' ELSE 'Cheap' END FROM products;
Referências: Oracle Database 11g SQL