Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:fusione di due query diverse in una, LIKE &IN

Come è stato già commentato, è meglio e più semplice concatenare solo diverse condizioni:

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

Un altro modo è inserire quei valori '%Medi%', '%Ciga%' e '%Tabacc%' in una conditionTable, quindi eseguire questa query:

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

Presumo qui che la tua tabella sia department e che la conditionTable ha una colonna value . Se implementi questa soluzione, dovresti preoccuparti della concorrenza e filtrare conditionTable in base a qualcosa come

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

Infine, una terza soluzione che potrebbe essere utile, se non si desidera utilizzare una conditionTable, è generare una stringa select <cond1> as value from dual union select <cond2> from dual... e inserito in una query dinamica come

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;