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.

    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.

    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.

    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.