Como fazer uma verificacao dentro da clausula where

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
alineri
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Qui, 28 Fev 2008 4:46 pm
Localização: RJ

ola pessoal,

gostaria de saber se existe a possibilidade de fazer uma verificacao dentro de um where, que seria assim, se um campo estivese vazio passava um ' and campo is not null`

exemplo

select campo1, campo2 from tabela
where campo1=:campo1

e agora faria a verificacao

decode(campo3,null, and campo2 is not null)

a ideia seria essa, mas não funciona, tem como fazer isso ? a versao que utilizo do oracle e a 8.i

um forte abraco

alineri
schnu
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 110
Registrado em: Ter, 24 Mai 2005 9:16 pm
Localização: Dongguan - Guangdong - China

Eu não sei se o banco 8i suporta


Mas você teria que fazer com a clausa

Selecionar tudo

select campo1, campo2 from tabela 
where campo1=:campo1 
case when campo3 is null then 
 and campo2 is not null 
end
não tenho certeza que a sintaxe esta certa, terá que conferir isso ai... ou se alguém souber certo manda ai...


Obs. Utilize sempre a tag CODE para exibir códigos. Fica melhor! :-o
marcio.adao
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 18 Mai 2007 11:52 am
Localização: Descalvado

Olá, Alineri!
Será que com o OR não daria certo?
Algo assim:

Selecionar tudo

select campo1, campo2 from tabela 
where campo1=:campo1 
and (campo3 is not null or (campo3 is null and campo2 is not null))
Abraço!
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Onde vais usar este select??

Podes trabalhar com querys dinâmicas onde as restrições são feitas por variaveis, as quais recebem trechos de codigo conforme a situação desejada.

Isso pode ser feito criando uma procedure que monta este teu select fazendo os testes que desejares.
E no select passa na restrição &Nome_parametro.
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Se for para executar o código dentro do forms, você pode montar sua query em uma variavel e depois usar o execute immediate.
Responder
  • Informação
  • Quem está online

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