Olá pessoal, vamos a mais um artigo sobre SQL, neste vou mostrar uma situação muito intrigante que aconteceu comigo na época, precisei fazer um relatório e concatenar os dados de endereço dos clientes cadastrados, até ai tudo bem. Fiz uma coisa muito simples fui concatenando os dados C.Endereco || C.Numero || C.CEP || C.Complemento || C.Bairro.
Muito simples não é? Mas o problema estava nos clientes que não tinham por exemplo o complemento, o select retornava o seguinte.



O problema era que o cliente Douglas Claudio tinha Endereço, Número, CEP, Bairro. A única informação que não estava no cadastro do mesmo era a de Complemento. O problema é que quando o campo é nulo o Firebird não consegue concatenar com valores nulos, para isso exite uma função chamada COALESCE.

Esta função tem como objetivo retornar a primeira expressão não nula entre seus argumentos.

Sintaxe :

COALESCE (expression [ ,...n ] )
Agora que vimos a introdução e a sintaxe vamos ver como consegui resolver meu problema.

Select Original :

SELECT C.Endereco || C.Numero || C.CEP || C.Complemento || C.Bairro 
  FROM CLIENTE C
Select Modificado :

SELECT C.Endereco || C.Numero || C.CEP || 
       COALESCE(C.Complemento, '') || C.Bairro 
   FROM CLIENTE C
Veja que coloquei apenas a função COALESCE ao lado do Complemento, no meu caso foi feito assim pois todos outros campos são obrigatórios então nunca teria um Cliente sem Endereco, Numer, CEP e Bairro agora o complemento ele não é obrigatório e nem pode ser.

Então é isso pessoal, obrigado pela atenção e um abraço.

Wesley Y