REGEXP_INSTR
Gibt die Position des Teilstrings zurück, der zu einem regulären Ausdruck passt.
MySQL 8.1
REGEXP_INSTR(expr, pattern[, pos[, occurrence[, return_option[, 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, standardmäßig 1
- occurrenceINToptional
- Nummer des Treffers, standardmäßig 1 (der erste)
- return_optionINToptional
- Standardmäßig der Anfang des Treffers, bei 1 die Position direkt danach
- Werte:01
- match_typeVARCHARoptional
- Flags wie bei REGEXP_LIKE, zum Beispiel c für die Beachtung von Groß- und Kleinschreibung
Rückgabewert
Ganze Zahl, die Position ab 1; 0, wenn es keinen Treffer gibt; NULL, wenn expr oder pattern NULL ist
Beispiele
Position der ersten Zahl
MySQL 8.1
SELECT REGEXP_INSTR('sql-academy-2024', '[0-9]+');Anfang und Ende der zweiten Zahl
MySQL 8.1
SELECT REGEXP_INSTR('a1b22c333', '[0-9]+', 1, 2) AS match_start,
REGEXP_INSTR('a1b22c333', '[0-9]+', 1, 2, 1) AS after_match;Adresse ohne Postleitzahl
MySQL 8.1
SELECT address,
SUBSTRING(
address,
REGEXP_INSTR(address, '^[0-9-]+, ', 1, 1, 1)
) AS without_zip
FROM Rooms
LIMIT 5;Details
pos muss zwischen 1 und der Länge des Strings liegen: 0, eine negative Zahl oder eine Position hinter dem letzten Zeichen ergeben den Fehler «Index out of bounds in regular expression search», nicht 0.
Mit return_option = 1 gibt die Funktion die Position direkt nach dem Treffer zurück, und du kannst sie sofort an SUBSTRING übergeben, um den Text nach dem gefundenen Teil zu nehmen.