SQL Academy
Premium
Funktionsreferenz

REGEXP_SUBSTR

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

MySQL 8.1
REGEXP_SUBSTR(expr, pattern[, pos[, occurrence[, match_type]]])

Parameter

exprVARCHAR
String, in dem gesucht wird
patternVARCHAR
Regulärer Ausdruck
posINToptional
Position, ab der gesucht wird, von 1 bis zur Länge des Strings + 1, standardmäßig 1
occurrenceINToptional
Nummer des Treffers, standardmäßig 1 (der erste)
match_typeVARCHARoptional
Flags wie bei REGEXP_LIKE, zum Beispiel c für die Beachtung von Groß- und Kleinschreibung

Rückgabewert

Passender Teilstring; NULL, wenn es keinen Treffer gibt oder expr oder pattern NULL ist

Beispiele

Datum aus einem String

MySQL 8.1
SELECT REGEXP_SUBSTR(
		'Order from 2024-03-08',
		'[0-9]{4}-[0-9]{2}-[0-9]{2}'
	);
REGEXP_SUBSTR('Order from 2024-03-08', '[0-9]{4}-[0-9]{2}-[0-9]{2}')
2024-03-08

Dritte Zahl im String

MySQL 8.1
SELECT REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3);
REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3)
333

Straße aus der Adresse

MySQL 8.1
SELECT address,
	REGEXP_SUBSTR(address, '[^, ][^,]*', 1, 2) AS street
FROM Rooms
LIMIT 5;
addressstreet
11218, Friel Place, New YorkFriel Place
10018, 6th Avenue, New York6th Avenue
10027, West 128th Street, New YorkWest 128th Street
11238, Gates Avenue, New YorkGates Avenue
10029, Park Avenue, New YorkPark Avenue

Details

Gruppen in Klammern werden nicht einzeln zurückgegeben: Das Ergebnis ist der ganze Treffer. Um nur einen Teil des Treffers zu erhalten, grenze den Ausdruck ein oder verwende REGEXP_REPLACE mit $1. pos muss zwischen 1 und der Länge des Strings + 1 liegen: Bei 0 und bei einem größeren Wert gibt die Funktion einen Fehler aus.

Siehe auch