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
  

Mensagemem Qui, 25 Jun 2009 8:26 pm

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
alineri
Localização: RJ

Mensagemem Sex, 26 Jun 2009 4:47 am

Eu não sei se o banco 8i suporta


Mas você teria que fazer com a clausa

Código: Selecionar todos
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
schnu
Localização: Dongguan - Guangdong - China

Mensagemem Sex, 26 Jun 2009 10:53 am

Olá, Alineri!
Será que com o OR não daria certo?
Algo assim:
Código: Selecionar todos
select campo1, campo2 from tabela
where campo1=:campo1
and (campo3 is not null or (campo3 is null and campo2 is not null))


Abraço!
marcio.adao
Localização: Descalvado

Mensagemem Sex, 26 Jun 2009 12:02 pm

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.
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Seg, 29 Jun 2009 9:56 pm

Se for para executar o código dentro do forms, você pode montar sua query em uma variavel e depois usar o execute immediate.
RodrigoValentim
Localização: Salvador - BA

Rodrigo Valentim
Analista de Sistemas
Oracle Developer

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


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


      Voltar para SQL

      Quem está online

      Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante