Qual a sintaxe correta no when e no where?

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Det
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Sex, 20 Dez 2019 2:29 pm

Boa tarde a todos.

Qual seria a sintaxe correta?
Preciso passar uma lista, se coloco um nr só funciona.
Como tenho que passar a vírgula?

Selecionar tudo

where 1=1 ....
and p.tipo in (
 (case 
  when '92'!='92' then  '92'
  else 
       '10','26X'
  end
))
Obrigado
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Pode fazer assim se você quiser usar IN:

Selecionar tudo

WHERE 1=1
  and p.tipo in 
  ( select '92' from dual where ....... 
    union all select '10' from dual where ....
    union all select '26X' from dual where ....
    union all (select outros_tipos from outras_tabelas where)
  )
Outra forma é fazer direto nas condições:

Selecionar tudo

WHERE 1=1
  and ( p.tipo = '10'  
          or p.tipo = '20'
          or p.tipo = '40'
         )
Não sei muito bem do que você precisa, mas tem várias formas de fazer isso.
Det
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Sex, 20 Dez 2019 2:29 pm

Obrigado pelo retorno...na verdade eu preciso fazer uma condição com um campo string.
Exemplo: Se escolher X1, tenho que trazer X1,1,2 caso contrario é o próprio campo...

hj tenho o seguinte:

Selecionar tudo

select * 
from tabela
where 
Se var = 'X1'
    tipo in ('X1','26')
else
  tipo =  var
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que eu entendi.
Considerando que TIPO é um campo da tabela.
Seria algo assim:

Selecionar tudo

select *
from tabela
where
( var = 'X1' and tipo in ('X1','26')
  or
  tipo = var
)
Ou seja, vai trazer os tipos X1 e 26 quando var = X1.
Mas se var não for X1, vai trazer os tipo = var.
Det
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Sex, 20 Dez 2019 2:29 pm

Obrigado
Responder
  • Informação
  • Quem está online

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