Funções CASE, COALESCE e NULLIF no InterBase

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (13)  (0)

Veja neste artigo as funções CASE, COALESCE e NULLIF no Interbase.

No Borland InterBase 7.5 algumas novas funções descritas no padrão ANSI foram implementas, são as funções CASE, COALESCE e NULLIF.

Para entender o que cada uma faz iremos criar uma tabela, um generator e inserir alguns registros, abaixo segue o script para execução:

·          Criação do Generator

create generator gen_id_cliente;

·          Criação da Tabela

Create Table CLIENTE ( ID_CLIENTE Integer not null,
nome varchar(40) not null,
razao_social varchar(60),
CPJ_CNPF varchar(18),
Ativo Boolean,
Saldo Numeric(15, 2 ),
constraint pk_cliente primary Key ( id_cliente )
);

·          Inserindo registros

Insert Into CLIENTE (ID_CLIENTE, NOME, RAZAO_SOCIAL, CPJ_CNPF, ATIVO, SALDO)
Values (gen_id(gen_id_cliente, 1), 'PADARIA DOCES E SABORES', ‘PADARIA DS', '1234567890', true, -100 );

Insert Into CLIENTE (ID_CLIENTE NOME, RAZAO_SOCIAL, CPJ_CNPF, ATIVO, SALDO)
Values (gen_id(gen_id_cliente, 1), 'PEDRO DA SILVA TADEU', null, '8415784548', false, 1200 );

Insert Into CLIENTE (ID_CLIENTE, NOME, RAZAO_SOCIAL, CPJ_CNPF, ATIVO, SALDO)
Values (gen_id(gen_id_cliente, 1), 'JOAO JOSE FARINHA', null, '3232242342', false, -10 );

Insert Into CLIENTE (ID_CLIENTE, NOME, RAZAO_SOCIAL, CPJ_CNPF, ATIVO, SALDO)
Values (gen_id(gen_id_cliente, 1), 'FLAVIA MARIA PEDROSCA', ‘FMP', '1294316576', true, 2554 );

Insert Into CLIENTE (ID_CLIENTE, NOME, RAZAO_SOCIAL, CPJ_CNPF, ATIVO, SALDO)
Values (gen_id(gen_id_cliente, 1), 'DEVMEDIA', ‘CLUBE DELPHI', '129431657600123', true, null );

Após execução dos scripts vamos entender as três novas funções.

CASE

Utilizado em situações em que várias condições determinam um valor de retorno diferente, mas do mesmo tipo.

O exemplo abaixo mostra uma coluna representando a situação do cliente em função do saldo, esta coluna será retornada com o nome de SITUACAO.

Ex:

SELECT ID_CLIENTE, NOME, RAZAO_SOCIAL, CPJ_CNPF, ATIVO, SALDO,
CASE
   WHEN SALDO < 0 THEN 'Cliente Devedor'
   WHEN SALDO = 0 THEN 'Saldo zerado'
   WHEN SALDO > 0 THEN 'Saldo Positivo'
ELSE
   'Indefinido'
end
as SITUACAO
FROM CLIENTE

24-06pic01.JPG 

COALESCE

Esta função é utilizada quando um conjunto de campos for passado e deve ser retornado o primeiro não nulo, esta função é muito útil quando se quer fazer uma soma de campos numéricos e um deles é nulo, com esta função podemos retornar zero quando campo for nulo.

O exemplo abaixo retorna a coluna com o nome que não for nulo entre o campo NOME e RAZAO_SOCIAL já a coluna SALDO irá retornar zero quando a coluna for nulo.

Ex:

SELECT
ID_CLIENTE, COALESCE( NOME, RAZAO_SOCIAL ) as NOME_APRESENTACAO,
NOME, RAZAO_SOCIAL, COALESCE( SALDO, 0.0) as SALDO
FROM CLIENTE

24-06pic02.JPG 

NULLIF

Esta função é utilizada para comparação de dois parâmetros, sendo os dois iguais o retorno será null, caso contrário o primeiro parâmetro será retornado.

O exemplo abaixo retorna null quando a coluna saldo tiver o saldo igual a -10.

Ex:

SELECT
ID_CLIENTE, NOME, RAZAO_SOCIAL, saldo, NULLIF( SALDO, -10) as SALDO_nullif
FROM
CLIENTE

24-06pic03.JPG 

Conclusões

Estas funções são muito úteis no dia a dia, o padrão ANSI-99 especifica estas funções, portanto se os bancos de dados implementarem estas funções os exemplos acima poderão ser utilizados, no caso da função CASE esta poderá ser utilizada em InterBase 7.5, SQL Server, Oracle e DB2.

Encontramos-nos no próximo artigo.
Abraços,
Andreano

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?