Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Zusammenführen von zwei verschiedenen Abfragen zu einer, LIKE &IN

Wie bereits angemerkt, ist es besser und einfacher, einfach mehrere Bedingungen zu verketten:

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

Eine andere Möglichkeit besteht darin, diese Werte '%Medi%', '%Ciga%' und '%Tabacc%' in eine Bedingungstabelle einzufügen und dann diese Abfrage auszuführen:

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

Ich gehe hier davon aus, dass Ihre Tabelle department ist und dass die conditionTable eine Spalte value hat . Wenn Sie diese Lösung implementieren, sollten Sie sich um Parallelität kümmern und conditionTable nach etwas wie

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

Schließlich ist eine dritte Lösung, die praktisch sein könnte, wenn Sie keine Bedingungstabelle verwenden möchten, die Generierung einer Zeichenfolge select <cond1> as value from dual union select <cond2> from dual... und in eine dynamische Abfrage als

eingefügt
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;