REGEXP_INSTR
Gibt die Position des Teilstrings zurück, der zu einem regulären Ausdruck passt.
MySQL 8.4
REGEXP_INSTR(expr, pattern[, pos[, occurrence[, return_option[, match_type]]]])- [ ]optionaler Teil
- expr
- String, in dem gesucht wirdVARCHAR
- pattern
- Regulärer AusdruckVARCHAR
- pos
- Position, ab der gesucht wird, von 1 bis zur Länge des Strings, standardmäßig 1INTOptional
- occurrence
- Nummer des Treffers, standardmäßig 1 (der erste)INTOptional
- return_option
- 0 für den Anfang des Treffers, 1 für die Position danach; standardmäßig 0INTOptional01
- match_type
- Flags für den Abgleich, kombinierbarVARCHAROptionalcimnu
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.4
SELECT REGEXP_INSTR('sql-academy-2024', '[0-9]+');Anfang und Ende der zweiten Zahl
MySQL 8.4
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.4
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.