SQL Academy
Premium
Funktionsreferenz

REGEXP_SUBSTR

Gibt den Teilstring zurück, der zu einem regulären Ausdruck passt.

PostgreSQL 17.5
REGEXP_SUBSTR(string, pattern[, start[, occurrence[, flags[, subexpr]]]])

Parameter

stringtext
String, in dem gesucht wird
patterntext
Regulärer Ausdruck
startintegeroptional
Position, ab der gesucht wird, standardmäßig 1
occurrenceintegeroptional
Nummer des Treffers, standardmäßig 1
flagstextoptional
Flags, zum Beispiel i, um Groß- und Kleinschreibung zu ignorieren
subexprintegeroptional
Nummer der Gruppe in Klammern, die zurückgegeben wird; standardmäßig 0, der ganze Treffer

Rückgabewert

String (text); NULL, wenn es keinen Treffer gibt

Beispiele

Erste und zweite Zahl

PostgreSQL 17.5
SELECT REGEXP_SUBSTR('Order 42 from 2024-03-08', '[0-9]+') AS first_number,
	REGEXP_SUBSTR('Order 42 from 2024-03-08', '[0-9]+', 1, 2) AS second_number;
first_numbersecond_number
422024

Domain aus E-Mail über eine Gruppe

PostgreSQL 17.5
SELECT email,
	REGEXP_SUBSTR(email, '@(.+)$', 1, 1, '', 1) AS domain
FROM Users
LIMIT 5;
emaildomain
barjam@hotmail.comhotmail.com
tellis@me.comme.com
metzzo@superhotmail.comsuperhotmail.com
ralamosm@verizon.netverizon.net
barjam@hotmail.comhotmail.com

Details

Die Funktion gibt es seit PostgreSQL 15. Anders als REGEXP_MATCH gibt sie einen String zurück, kein Array. Um subexpr anzugeben, übergibst du alle Argumente davor: flags darf ein leerer String '' sein.

Siehe auch