Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle :fusion de deux requêtes différentes en une seule, LIKE &IN

Comme cela a déjà été commenté, il est préférable et plus simple de simplement concaténer plusieurs conditions :

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

Une autre façon consiste à insérer ces valeurs '%Medi%', '%Ciga%' et '%Tabacc%' dans une conditionTable, puis exécuter cette requête :

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

Je suppose ici que votre table est department et que le conditionTable a une colonne value . Si vous implémentez cette solution, vous devez vous soucier de la concurrence et filtrer conditionTable par quelque chose comme

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

Enfin, une troisième solution qui pourrait être pratique, si vous ne voulez pas utiliser une conditionTable, est de générer une chaîne select <cond1> as value from dual union select <cond2> from dual... et placé dans une requête dynamique en tant que

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;