sql >> Base de Datos >  >> RDS >> Oracle

Oracle:fusionando dos consultas diferentes en una, LIKE &IN

Como ya se comentó, es mejor y más simple simplemente concatenar varias condiciones:

where departmentName like '%Medi%'
   or departmentName like '%Ciga%'
   or departmentName like '%Tabacc%';

Otra forma es insertar esos valores '%Medi%', '%Ciga%' y '%Tabacc%' en una tabla de condiciones y luego ejecutar esta consulta:

select department.*
  from department
 cross join conditionTable
 where department.departmentName like conditionTable.value;

Estoy asumiendo aquí que su mesa es department y que conditionTable tiene una columna value . Si implementa esta solución, debe preocuparse por la concurrencia y filtrar conditionTable por algo como

select department.*
  from department
 inner join conditionTable on conditionTable.session = yourSessionId
 where department.departmentName like conditionTable.value;

Finalmente, una tercera solución que podría ser útil, si no desea utilizar una tabla de condiciones, es generar una cadena select <cond1> as value from dual union select <cond2> from dual... y colocado en una 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;