Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle:mesclando duas consultas diferentes em uma, LIKE &IN


Como já foi comentado, é melhor e mais simples apenas concatenar várias condições:
where departmentName like '%Medi%'
   or departmentName like '%Ciga%'
   or departmentName like '%Tabacc%';

Outra maneira é inserir esses valores '%Medi%', '%Ciga%' e '%Tabacc%' em uma conditionTable e, em seguida, executar esta consulta:
select department.*
  from department
 cross join conditionTable
 where department.departmentName like conditionTable.value;

Estou assumindo aqui que sua tabela é department e que a conditionTable tem uma coluna value . Se você implementar esta solução, deve se preocupar com a simultaneidade e filtrar conditionTable por algo como
select department.*
  from department
 inner join conditionTable on conditionTable.session = yourSessionId
 where department.departmentName like conditionTable.value;

Finalmente, uma terceira solução que pode ser útil, se você não quiser usar uma conditionTable, é gerar uma string select <cond1> as value from dual union select <cond2> from dual... e colocado em uma consulta dinâmica como
select department.*
  from department
 cross join
   (select '%Medi%' as value from dual
     union
    select '%Ciga%' from dual
     union
    select '%Tabacc%' from dual) conditionTable
 where department.departmentName like conditionTable.value;