Aprenda PL/SQL

Retornar valor Nulo e Não Nulo

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 15 Ago 2016 10:19 am

Pessoal, bom dia!

Tenho uma tabela onde na mesma coluna possui valores Nulos e Não Nulos e preciso de retornar no mesmo SQL, tentei desta forma mas retorna apenas os Não Nulos.

Código: Selecionar todos
select a.nome, a.status from tb_cliente a where a.status in (1,2,null)


No sistema o 'STATUS' 1 = reativado, 2 = cancelado e Null = normal

Na query preciso de retornar todos os clientes em seus respectivos Status.

Grato
Erik
escastilho
Localização: São Sebastião do Paraíso -MG

Mensagemem Seg, 15 Ago 2016 1:29 pm

Boa tarde Erick!

Você pode tentar assim:
Código: Selecionar todos
select a.nome, NVL(a.status,'Normal') as status
from tb_cliente a
where a.status is null or a.status in (1,2)


Espero ter ajudado!
abraço!
geovani
Localização: Joinville-SC

Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com

Mensagemem Ter, 16 Ago 2016 10:24 am

geovani escreveu:Boa tarde Erick!

Você pode tentar assim:
Código: Selecionar todos
select a.nome, NVL(a.status,'Normal') as status
from tb_cliente a
where a.status is null or a.status in (1,2)


Espero ter ajudado!
abraço!


Geovani, bom dia!

Tentei conforme você explicou mas esta dando erro ORA-01722: invalid number
escastilho
Localização: São Sebastião do Paraíso -MG

Mensagemem Ter, 16 Ago 2016 11:41 am

escastilho escreveu:
geovani escreveu:Boa tarde Erick!

Você pode tentar assim:
Código: Selecionar todos
select a.nome, NVL(a.status,'Normal') as status
from tb_cliente a
where a.status is null or a.status in (1,2)


Espero ter ajudado!
abraço!


Geovani, bom dia!

Tentei conforme você explicou mas esta dando erro ORA-01722: invalid number


Está dando o erro ORA-01722: invalid number porque usando NVL(a.status,'Normal') retorna um texto quando é nulo e o campo espera um número.

Faça assim:

Código: Selecionar todos
select a.nome, DECODE(a.status,1,'REATIVADO',2,'CANCELADO','NORMAL') as status
from tb_cliente a
where a.status is null or a.status in (1,2)
geovani
Localização: Joinville-SC

Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes