sql >> Databasteknik >  >> RDS >> Oracle

dynamiskt antal where condition i oracle sql

Försök

select something
  from somewhere
 where someColumn in (select regexp_substr('abc-def-xyz','[^-]+', 1, level) from dual
                     connect by regexp_substr('abc-def-xyz', '[^-]+', 1, level) is not null);

Att generalisera (med tanke på att dina fält är separerade med "-")

select something
  from somewhere
 where someColumn in (select regexp_substr(variable,'[^-]+', 1, level) from dual
                     connect by regexp_substr(variable, '[^-]+', 1, level) is not null);

I grund och botten visas utdata från underfrågan nedan -

  SQL> select regexp_substr('abc-def-xyz','[^-]+', 1, level) value from dual
      connect by regexp_substr('abc-def-xyz', '[^-]+', 1, level) is not null;

VALUE                            
-------------------------------- 
abc                              
def                              
xyz  


  1. SQL LIMIT med WHERE-sats

  2. Laravel-migrering - Överträdelse av integritetsbegränsning:1452 Kan inte lägga till eller uppdatera en underordnad rad:en främmande nyckel-begränsning misslyckas

  3. Hur undkommer man reserverade mysql-ord i fråga i php?

  4. MySql FEL! Servern avslutades utan att uppdatera PID-filen