REGEXP_REPLACE
Ersetzt die Treffer eines regulären Ausdrucks durch einen anderen String.
MySQL 8.4
REGEXP_REPLACE(expr, pattern, replacement[, pos[, occurrence[, match_type]]])- [ ]optionaler Teil
- expr
- AusgangsstringVARCHAR
- pattern
- Regulärer AusdruckVARCHAR
- replacement
- String, der anstelle des Treffers eingesetzt wirdVARCHAR
- pos
- Position, ab der gesucht wird, von 1 bis zur Länge des Strings + 1, standardmäßig 1INTOptional
- occurrence
- Nummer des zu ersetzenden Treffers, standardmäßig 0 (alle Treffer)INTOptional
- match_type
- Flags für den Abgleich, kombinierbarVARCHAROptionalcimnu
Rückgabewert
String mit ersetzten Treffern; der Ausgangsstring, wenn es keine Treffer gibt; NULL, wenn expr, pattern oder replacement NULL ist
Beispiele
Alle Ziffern ersetzen
MySQL 8.4
SELECT REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*');Nur die zweite Zahl ersetzen
MySQL 8.4
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2);Datumsteile umstellen
MySQL 8.4
SELECT REGEXP_REPLACE(
'2024-03-08',
'([0-9]{4})-([0-9]{2})-([0-9]{2})',
'$3.$2.$1'
);Nur die Ziffern der Telefonnummer
MySQL 8.4
SELECT name,
REGEXP_REPLACE(phone_number, '[^0-9]', '') AS digits
FROM Users
LIMIT 5;Details
In replacement kannst du einen Teil des Treffers aus Klammern einsetzen: $1 ist die erste Gruppe, $2 die zweite und so weiter. 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.