Página 1 de 1
Validar se todos os valores da cláusula "in" existem
Enviado: Seg, 29 Ago 2022 6:57 pm
por tiagoss
Tenho um sql que estou comparando valores dentro de uma cláusula "in" e só devo retornar se todos existirem. Exemplo:
Selecionar tudo
select *
from teste
where campo1 in ('AAA', 'BBB', ''CCC', 'DDD');
Na tabela "teste" campo "campo1" não tenho o valor ''CCC'. Então não devo trazer nenhum resultado.
Na tabela "teste" campo "campo1" tenho 'AAA', 'BBB', 'DDD'. Então devo trazer os 3 resultados.
Possui algum função no oracle se todos os valores da cláusula "in" existem?
Re: Validar se todos os valores da cláusula "in" existem
Enviado: Ter, 30 Ago 2022 4:02 pm
por dr_gori
Dá pra fazer assim:
Selecionar tudo
select *
from teste
where campo1 in ('AAA', 'BBB', ''CCC', 'DDD')
and exists (select 1 from teste where campo1='AAA')
and exists (select 1 from teste where campo1='BBB')
and exists (select 1 from teste where campo1='CCC')
and exists (select 1 from teste where campo1='DDD')
Neste caso, ele vai trazer todas essas linhas, caso TODAS existam.
Já no exemplo abaixo, ele não vai trazer nenhuma linha, pois NNN não existe.
Selecionar tudo
select *
from teste
where campo1 in ('AAA', 'BBB', ''CCC', 'DDD')
and exists (select 1 from teste where campo1='AAA')
and exists (select 1 from teste where campo1='BBB')
and exists (select 1 from teste where campo1='CCC')
and exists (select 1 from teste where campo1='NNN')
Re: Validar se todos os valores da cláusula "in" existem
Enviado: Sáb, 03 Set 2022 3:52 pm
por tiago_pimenta
Precisa mesmo ser com a cláusula "IN" ??? Pois a clausula "IN" faz justamente isso, traz resultado se tiver pelo menos 1 condição válida !!!
Re: Validar se todos os valores da cláusula "in" existem
Enviado: Seg, 05 Set 2022 7:52 pm
por dr_gori
A cláusula IN vai trazer as linhas que existirem dentro da cláusula IN.
Você pode ter 10 valores dentro da cláusula IN, e se na tabela só tiver 1, ele vai trazer esse 1.
O que ele quer é:
só devo retornar se todos existirem.
Por isso o EXISTS. Faça o teste!
Re: Validar se todos os valores da cláusula "in" existem
Enviado: Seg, 12 Set 2022 9:47 am
por tiago_pimenta
Exatamente dr_gori, por isso perguntei se necessariamente tinha que ser com a clausula "IN"