SQL Academy
Premium
Funktionsreferenz

REGEXP_REPLACE

Ersetzt die Substrings, die zu einem regulären Ausdruck passen, durch den angegebenen String.

PostgreSQL 17.5
REGEXP_REPLACE(source, pattern, replacement[, start[, occurrence]][, flags])

Parameter

sourcetext
Ausgangsstring
patterntext
Regulärer Ausdruck
replacementtext
String, der anstelle des Treffers eingesetzt wird
startintegeroptional
Position, ab der gesucht wird, standardmäßig 1
occurrenceintegeroptional
Nummer des zu ersetzenden Treffers, 0 für alle Treffer, standardmäßig der erste
flagstextoptional
Flags: g ersetzt alle Treffer, i ignoriert Groß- und Kleinschreibung

Rückgabewert

String mit Ersetzung; ohne Flag g und ohne occurrence wird nur der erste Treffer ersetzt

Beispiele

Ersetzen mit und ohne Flag g

PostgreSQL 17.5
SELECT REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*') AS first_only,
	REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*', 'g') AS all_matches;
first_onlyall_matches
sql-academy-*024sql-academy-****

Nur die zweite Zahl ersetzen

PostgreSQL 17.5
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2);
regexp_replace
a1b*c333

Datumsteile umstellen

PostgreSQL 17.5
SELECT REGEXP_REPLACE(
		'2024-03-08',
		'([0-9]{4})-([0-9]{2})-([0-9]{2})',
		'\3.\2.\1'
	);
regexp_replace
08.03.2024

Leerzeichen in Namen zu Unterstrichen

PostgreSQL 17.5
SELECT good_name,
	REGEXP_REPLACE(good_name, ' ', '_', 'g') AS slug
FROM Goods
LIMIT 5;
good_nameslug
apartment feeapartment_fee
phone feephone_fee
breadbread
milkmilk
red caviarred_caviar

Details

In replacement kannst du einen Teil des Treffers aus Klammern einsetzen: \1 ist die erste Gruppe, \2 die zweite und \& der ganze Treffer. Ohne das Flag g wird nur der erste Treffer ersetzt. In MySQL werden standardmäßig alle Treffer ersetzt, und eine Gruppe schreibst du im Ersatz als $1.

Siehe auch