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;