regexp_substr-Funktion

Gilt für:Häkchen ja Databricks SQL Häkchen Databricks Runtime 11.3 LTS und höher

Gibt den ersten Substring in str zurück, die mit regexp übereinstimmt.

Syntax

regexp_substr( str, regexp )

Argumente

  • str: Ein STRING-Ausdruck, der abgeglichen werden soll.
  • regexp: Ein STRING-Ausdruck mit einem übereinstimmenden Muster.

Gibt zurück

Ein STRING.

regexp_substr gibt die gesamte Teilzeichenfolge zurück, die regexp nicht mit einer einzelnen Erfassungsgruppe übereinstimmt. Verwenden Sie regexp_extract, um eine bestimmte Erfassungsgruppe zurückzugeben. Nur die erste Übereinstimmung wird berücksichtigt. Verwenden Sie regexp_extract_all, um jede Übereinstimmung zurückzugeben.

Die regexp Zeichenfolge muss ein regulärer Ausdruck sein. Siehe reguläre Ausdrücke für die unterstützte Syntax.

Verwenden Sie beim Einsatz von Literalen raw-literal (Präfixr), um die Vorabverarbeitung von Escapezeichen zu vermeiden.

Wenn str oder regexp ist NULL, oder das Muster nicht gefunden wird, lautet NULLdas Ergebnis .

Häufige Fehlerbedingungen

Beispiele

Übereinstimmung mit einer von mehreren Alternativen

Das Muster Ste(v\|ph)en entspricht entweder Steven oder Stephen. Die Funktion gibt die erste Übereinstimmung zurück.

> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', r'Ste(v|ph)en');
 Steven

Extrahieren der ersten Zahl aus einer Zeichenfolge

Verwenden Sie ein unformatiertes Literal, \d sodass sie an das Regex-Modul übergeben wird, ohne den umgekehrten Schrägstrich zu verdoppeln.

> SELECT regexp_substr('item 42 costs $19', r'\d+');
 42

Groß-/Kleinschreibung beachten

Verwenden Sie die Inlinekennzeichnung, um die (?i) Groß-/Kleinschreibung zu ignorieren.

> SELECT regexp_substr('Error: disk full', r'(?i)error');
 Error

Extrahieren einer E-Mail-Adresse

> SELECT regexp_substr('Contact alice@example.com for details', r'\w+@\w+\.\w+');
 alice@example.com

Extrahieren des ersten Hashtags

regexp_substr gibt nur die erste Übereinstimmung zurück. Verwenden Sie regexp_extract_all, um jede Übereinstimmung zurückzugeben.

> SELECT regexp_substr('Posts tagged #data #ai #sql', r'#\w+');
 #data

Keine Übereinstimmung zurückgegeben NULL

Im Gegensatz zu regexp_extract, die eine leere Zeichenfolge zurückgibt, wird zurückgegebenNULL, regexp_substr wenn das Muster nicht gefunden wird.

> SELECT regexp_substr('Mary had a little lamb', r'Ste(v|ph)en');
 NULL

NULL Eingaberückkehrer NULL

> SELECT regexp_substr(NULL, r'Ste(v|ph)en');
 NULL

> SELECT regexp_substr('Mary had a little lamb', NULL);
 NULL

Ungültiges regex-Muster

> SELECT regexp_substr('abc', '[invalid');
  Error: INVALID_PARAMETER_VALUE.PATTERN