Substituir Null por Default num Select

Firebird

25/04/2003

Como faço para substituir uma campo null por um valor default apenas no select?

Ex: Quando o telefone for null aparecel ´sem telefone´.
Imagino que seja algo semelhante a:
select nome, comando(telefone,´sem telefone´) from cliente

Maria 3721-4321
Andre sem telefone
João sem telefone
Rosi 3721-1234


Lucianoko

Lucianoko

Curtidas 0

Melhor post

Lucio Motta

Lucio Motta

19/07/2015

o post é antigo mas sempre vale dar uma mãozinha...

para não trazer o NULL, o q pode dar problemas inclusive com SUMs, AVERAGEs...é só usar o COALESCE

Select COALESCE( campo , 'N' ) as campo FROM tabela

Quando o conteudo de 'campo' for NULL o COALESCE substitui pelo valor indicado( 'N' ou 0 ou 'False' ou qualquer coisa q vc queira )

Abraços
GOSTEI 1

Mais Respostas

Andreyrf

Andreyrf

25/04/2003

vc pode selecionar todos os telefones nulos

Select nome, ... sem telefone as telefone from cliente where fone is null


GOSTEI 0
Lucianoko

Lucianoko

25/04/2003

Andreyrf
Acho que você não entendeu.
Então vamos direto ao meu problema.

Preciso imprimir etiquetas da seguinte forma:

select Endereco || ´ - ´ || Bairro, ... from cliente ....

O problema é quando o Bairro é NULL aí a concatenação endereco + bairro resulta em null. Fudeeeeuuuu!!!!!!!

Entendeu?!
Preciso arrumar isto de uma forma bem prática.
Obs: Não vou lançar ´ ´ no lugar de null no cadastro de cliente.
Então eu pensei em antes de concatenar, converter null por ´ ´ apenas no select.
Uso o IB 6.5

Se puder me ajudar, obrigado!
t+


GOSTEI 0
«leandro»

«leandro»

25/04/2003

Vc pode usar a função coalesce(campo,valor) onde valor é o que vc quer que retorne no case de ser nulo, caso não seja nulo ele retorna o valor normal, ou então use o case, mas o case só existe no firebird 1.5 e o coalesce não se existe no ib 6.5.........valeu

leandro


GOSTEI 0
Afarias

Afarias

25/04/2003

Outra alternativa é NUNCA inserir nulos em campos q serão usados em ´concatenações´.

por ex, vc pode ter triggers BEFORE INSERT/UPDATE com o código:

if (new.campoX is null) then
new.campoX = ´´;



Abraço.


GOSTEI 0
Vicente Santos

Vicente Santos

25/04/2003

usei o coalesce(valor, valorpadraocasosejanull) e funcionou
GOSTEI 0
POSTAR