Introdução ao SQL - Case

Veja Nesta Quick Introdução ao SQL - Case

Introdução ao SQL

Case

 

Expressões CASE

 

O padrão SQL prevê a possibilidade de utilizar a expressão CASE, presente em diversas linguagens de programação. Utilizando essa cláusula é possível criar complexas estruturas de controle tanto nas diversas linguagens de programação como nos comandos SQL. Ao ser utilizada a cláusula CASE em comandos SQL é possível economizar diversas linhas de código, pois não é necessário criar blocos de programação para testar condições.

A expressão CASE será testada em tempo de execução do comando SELECT ou UPDATE. Como o CASE faz parte de outro comando, será possível colocá-lo em qualquer situação em que um valor deva ser testado.

Veja que em linguagens de programação usuais a expressão CASE, que é autônoma, não tem a mesma forma de avaliação e executará um bloco de instruções. Dessa forma, um único comando testará diversas linhas retornando, em cada linha, o comando correspondente à linha analisada.

 

SELECT

É possível utilizar o comando SELECT prevendo diversas condições para extração dos dados. A sintaxe é a seguinte:

 

SELECT colunas,

CASE

WHEN condição THEN ação

...

[ELSE condição padrão]

END

FROM tabela;

 

Como exemplo, podemos imaginar uma situação em que desejamos dar um desconto sobre o preço de venda CDs em função do preço. Quanto maior o preço de venda, maior o desconto. Veja:

 

select nome_cd, preco_venda,

case

when preco_venda < 10 then

preco_venda * 0.9

when preco_venda >=10 and preco_venda < 13 then

preco_venda * .8

else

preco_venda * .7

end venda

from cd

 

Nome_CD

Preço_Venda

Venda

Mais do Mesmo

16,00

11,20

Bate-Boca

13,00

9,10

Elis Regina

20,00

14,00

 

Veja que foi acrescentado após o END do comando o nome que queremos para a coluna (VENDA). O banco de dados faz os cálculos com base nas condições descritas em CASE, ou seja, quando o preço de venda for menor que 10, será dado um desconto de 10%; se for maior ou igual a 10 e menor que 13, será dado 20% de desconto e se for maior ou igual a 13, será dado 20% de desconto e se for maior ou igual a 13, será dado um desconto de 30%.

 

UPDATE

Podemos utilizar a mesma cláusula com o comando UPDATE. Assim, poderemos realizar atualizações com base em condições, simplificando a lógica de atualização dos dados. Veja a seguir um exemplo de como ficaria o banco de dados ao realizarmos a atualização proposta no comando SELECT anterior:

 

update cd

set preco_venda =

case

when preco_venda < 10 then

preco_venda * 0.9

when preco_venda >=10 and preco_venda < 13 then

preco_venda * .8

else

preco_venda * .7

end;

 

Vamos verificar como ficou o conteúdo do campo que atualizamos:

 

Nome_CD

Preço_Venda

Mais do Mesmo

3,47

Bate-Boca

3,18

Elis Regina

3,81

 

 

CASE compacto

É possível utilizar um teste CASE mais compacto que o demonstrado anteriormente. Para isso, basta colocarmos a coluna que queremos avaliar após a cláusula CASE e testarmos os valores após a cláusula WHEN. Observe que nesse caso é possível testar apenas igualdade, uma vez que nenhum operador poderá ser colocado ao lado do valor avaliado.

O exemplo a seguir é apenas didático, pois o correto seria unir as tabelas CD e GRAVADORA,  e mostra o nome do CD e o nome da gravadora.

 

select nome_cd,

case codigo_gravadora

when 1 then 'EMI'

when 2 then 'BMG'

when 3 then 'Som Livre'

end

from CD;

 

 

Conclusão: Podemos trabalhar de várias maneiras com CASE, é muito prático para criarmos triggers entre outras funções, até o próximo artigo.

 

 

Autor:Rubens Antunes

 

Autor do Livro: Delphi Faça Uma Aplicação Comercial

 

Artigos relacionados