Buscar

Interbase - funções case, coalesce e nullif

nome

Andreano Lanusse

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

InterBase
Funções CASE, COALESCE e NULLIF


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á retorna 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



COALESCE
Esta função é utilizada quando uma 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

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


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
Andreano Lanusse (andreano.lanusse@borland) é System Engineer da Borland Latin América, onde é membro do Delphi Team. Especialista em InterBase há 10 anos, possui vasta experiência em desenvolvimento de aplicações, além de obter certificado Borland Instructor, Delphi 2005 Win32 e .NET, C++ Builder, JBuilder, Together, StarTeam, CaliberRM, MCP em SQL Server e Windows 2000.


Publicidade

Vote no artigo




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes do artigo

Categoria: Banco de dados
Adicionado dia: 01/09/06
Por: Andreano Lanusse
Visualizado: 31100 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009