Home - www.devmedia.com.br

O Case do Firebird

O comando CASE foi incorporado ao Firebird a partir da versão 1.5. A função do CASE é retornar um valor baseado em uma lista de condições exclusivas (semelhante ao CASE de uma linguagem de programação).

Para um exemplo, tome por base que temos uma tabela chamada CAIXA e que possui os seguintes campos: ID, DATA, TIPO, DESCRICAO e VALOR. Faremos um select para que retorne os dados, e que no campo TIPO, apareça o texto “Débito” ou “Crédito”, dependendo do valor do campo. O CASE pode poupar o trabalho de alterarmos isso na aplicação Delphi.

select ID, DATA, DESCRICAO, VALOR,
  case TIPO   
   when
'C' then 'Crédito'
   when 'D' then 'Débito'
    else
       Campo em branco ou valor incorreto'
  end as TIPO_DE_LANCAMENTO
from CAIXA;



Note que o campo TIPO, aparecerá como TIPO_DE_PAGAMENTO no result do select. Ao executarmos o comando teremos os dados como mostra a Figura 1.


Figura 1. Retorno do select, utilizando o comando CASE



Caso o valor esteja em branco ou diferente da lista do CASE, o retorno seria a mensagem colocada no else do CASE Figura 2.


Figura 2. Retorno do select com a mensagem de valor não encontrado



Nota: O CASE é case-sensitive, ou seja, diferencia letras maiúsculas e minúsculas.

Você pode utilizar o CASE normalmente em views. O CASE pode também ser utilizado junto com funções de agregação. Imagine que você precise fazer um select para saber como está a distribuição dos seus clientes pelas regiões do país:

select case
   when (UF in ('RS', 'SC', 'PR')) then
        'Sul'
   when (UF in ('SP','RJ', 'ES', 'MG')) then
        'Sudeste'
   when (UF in ('MG','MS','GO','DF')) then
        'Centro-Oeste'
   when (UF in ('AC','RO','AM','RR','AP','PA')) then
        'Norte'
   when (UF in ('MA','PI','CE','RN','PB','PE','AL', 'SE','BA')) then
        'Nordeste'
  end as REGIAO, count (*) as TOTAL_CLIENTES
from CLIENTES;

Forte abraço a todos!

 

Luciano Pimenta® é acadêmico do curso de Sistemas de Informação (UNIFRA), Técnico em Processamento de Dados, Editor Técnico da Revista ClubeDelphi e desenvolvedor de projetos Client/Server, utilizando Firebird/Interbase.
lucianopimenta@clubedelphi.net.


  FB no Delphi 2005 - ParteII    
  FB no Delphi 2005 - ParteI    
  Exportando / Importando dados do FB / IB    
  Backup no FB/IB    
  Campos Calculados no Firebird    
  Criando usuários no FB/IB    
  Função Case do Firebird    
  Boas-Vindas    
     

 

Todos os direitos reservados: DevMedia Group
SQL Magazine - 2004