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

Oracle SQL:Gibt die erste Zeile der Zeichenfolge mit regexp_substr zurück

Der reguläre Ausdruck von Parado findet alles, was kein Komma ist, mehrmals gefolgt von einem Wagenrücklauf. Dies bedeutet, dass es bei einem Zeilenvorschub oder einem Komma im Text nicht funktioniert.

Oracle unterstützt mehrzeilige Ausdrücke mit m Übereinstimmungsparameter . Wenn Sie diesen Modus verwenden, $ stimmt mit dem Ende jeder Zeile sowie mit dem Ende der Zeichenfolge überein. Sie können dies verwenden, um den Ausdruck massiv zu vereinfachen:

regexp_substr(str, '.*$', 1, 1, 'm')

Das entspricht dem ersten Vorkommen (der ersten Zeile) der Zeichenfolge, die mit irgendetwas übereinstimmt, gefolgt vom Ende der Zeichenfolge, beginnend mit dem ersten Zeichen.

Als Beispiel:

with strings as ( 
 select 'hi
         hi again' as str
   from dual
  union all
 select 'bye
         and again'
   from dual
        )
 select regexp_substr(str, '.*$', 1, 1, 'm')
   from strings