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

Oracle:fletning af to forskellige forespørgsler til én, LIKE &IN

Som det allerede er kommenteret, er det bedre og enklere blot at sammenkæde flere betingelser:

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

En anden måde er at indsætte disse værdier '%Medi%', '%Ciga%' og '%Tabacc%' i en conditionTable og derefter køre denne forespørgsel:

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

Jeg antager her, at dit bord er department og at conditionTable har en kolonne value . Hvis du implementerer denne løsning, bør du bekymre dig om samtidighed og filtrere conditionTable efter noget som

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

Endelig er en tredje løsning, der kan være praktisk, hvis du ikke ønsker at bruge en conditionTable, at generere en streng select <cond1> as value from dual union select <cond2> from dual... og placeres i en dynamisk forespørgsel 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. Underforespørgsel med LIMIT i Doktrin

  2. opdele filnavn fra sti i postgres

  3. odp.net db ændringsmeddelelse

  4. MySQL Trigger - slet efter opdatering