sql >> Databasteknik >  >> RDS >> Oracle

Oracle:slå samman två olika frågor till en, GILLA &IN

Som redan har kommenterats är det bättre och enklare att bara sammanfoga flera villkor:

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

Ett annat sätt är att infoga dessa värden '%Medi%', '%Ciga%' och '%Tabacc%' i en conditionTable och sedan köra den här frågan:

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

Jag antar här att ditt bord är department och att conditionTable har en kolumn value . Om du implementerar den här lösningen bör du bry dig om samtidighet och filtrera conditionTable med något liknande

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

Slutligen, en tredje lösning som kan vara praktisk, om du inte vill använda en conditionTable, är att generera en sträng select <cond1> as value from dual union select <cond2> from dual... och placeras i en dynamisk fråga som

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;



  1. MySQL - Base64 vs BLOB

  2. Mysql PDO maximal LONGBLOB datalängd vid hämtning

  3. Uppdatera en tabell med count() från en annan tabell

  4. UTF8 och japanska tecken