SQL Academy
Premium
Funktionsreferenz

REGEXP_SUBSTR

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

MySQL 8.4
REGEXP_SUBSTR(expr, pattern[, pos[, occurrence[, match_type]]])
  • [ ]optionaler Teil
expr
String, in dem gesucht wird
VARCHAR
pattern
Regulärer Ausdruck
VARCHAR
pos
Position, ab der gesucht wird, von 1 bis zur Länge des Strings + 1, standardmäßig 1
INTOptional
occurrence
Nummer des Treffers, standardmäßig 1 (der erste)
INTOptional
match_type
Flags für den Abgleich, kombinierbar
VARCHAROptional
cimnu

Rückgabewert

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

Beispiele

Datum aus einem String

MySQL 8.4
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.4
SELECT REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3);
REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3)
333

Straße aus der Adresse

MySQL 8.4
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