Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Dynamische Anzahl der Where-Bedingung in Oracle SQL

Versuchen Sie es

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);

Zur Verallgemeinerung (in Anbetracht dessen, dass Ihre Felder durch "-" getrennt sind)

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);

Grundsätzlich wird die Ausgabe der Unterabfrage unten angezeigt -

  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