Substituir Null por Default num Select
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
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
Curtidas 0
Melhor post
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
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
25/04/2003
vc pode selecionar todos os telefones nulos
Select nome, ... sem telefone as telefone from cliente where fone is null
Select nome, ... sem telefone as telefone from cliente where fone is null
GOSTEI 0
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+
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»
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
leandro
GOSTEI 0
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.
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
25/04/2003
usei o coalesce(valor, valorpadraocasosejanull) e funcionou
GOSTEI 0