- Kategorien:
REGEXP_REPLACE¶
Gibt das Subjekt mit dem angegebenen Muster (oder allen Vorkommen des Musters) zurück, entweder durch eine Ersetzungszeichenfolge entfernt oder ersetzt.
Siehe auch Zeichenfolgenfunktionen (reguläre Ausdrücke).
Syntax¶
REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
Argumente¶
Benötigt:
subject
Die Zeichenfolge, nach der gesucht werden soll.
pattern
Abzugleichendes Muster.
Richtlinien zur Angabe von Mustern finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).
Optional:
replacement
Zeichenfolge, die als Ersatz für die vom Muster gefundenen Teilzeichenfolgen dient. Wenn eine leere Zeichenfolge angegeben wird, entfernt die Funktion alle gefundenen Muster und gibt die resultierende Zeichenfolge zurück.
Standard:
''
(leere Zeichenfolge).position
Anzahl der Zeichen ab dem Anfang der Zeichenfolge, an dem die Funktion mit der Suche nach Übereinstimmungen beginnt.
Standard:
1
(die Suche nach einer Übereinstimmung beginnt beim ersten Zeichen links)occurrence
Gibt an, welches Vorkommen des Musters ersetzt werden soll. Wenn
0
angegeben ist, werden alle Vorkommen ersetzt.Standard:
0
(alle Vorkommen)parameters
Zeichenfolge aus einem oder mehreren Zeichen, in der die Parameter angegeben sind, die zur Suche nach Übereinstimmungen verwendet werden. Unterstützte Werte:
Parameter
Beschreibung
c
Abgleich, bei dem zwischen Groß- und Kleinschreibung unterschieden wird
i
Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung
m
Mehrzeiliger Modus.
e
Untergeordnete Übereinstimmungen extrahieren
s
POSIX wildcard character
.
matches\n
Standard:
c
Weitere Details dazu finden Sie unter Angeben der Parameter für reguläre Ausdrücke.
Rückgabewerte¶
Gibt einen Wert vom Typ VARCHAR zurück.
Wenn keine Übereinstimmungen gefunden werden, wird das ursprüngliche Subjekt zurückgegeben.
Gibt NULL zurück, wenn ein Argument NULL ist.
Nutzungshinweise¶
Die Ersetzungszeichenfolge kann Rückverweise enthalten, um Gruppen zu erfassen (z. B. Unterausdrücke des Musters). Eine Erfassungsgruppe ist ein regulärer Ausdruck, der in Klammern (
( )
) eingeschlossen ist. Die maximale Anzahl von Erfassungsgruppen beträgt 9.Rückverweise gleichen Ausdrücke in einer Erfassungsgruppe ab. Rückverweise haben das Format
n
. Dabein
ein Wert zwischen 0 und 9 einschließlich , der sich auf die übereinstimmende Instanz der Erfassungsgruppe bezieht. Weitere Informationen finden Sie unter Beispiele (unter diesem Thema).Runde Klammern (
( )
) und eckige Klammern ([ ]
) müssen derzeit mit doppelten Escape-Zeichen versehen werden, damit sie als Literalzeichenfolgen analysiert werden.Das folgende Beispiel zeigt, wie Klammern entfernt werden:
SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers;
+----------------+ | CUSTOMERS | |----------------| | Customers - NY | +----------------+
Weitere Hinweise zur Verwendung der Funktionen für reguläre Ausdrücke finden Sie unter Allgemeine Nutzungshinweise.
Sortierungsdetails¶
Arguments with collation specifications are currently not supported.
Beispiele¶
Im folgenden Beispiel werden alle Leerzeichen in der Zeichenfolge durch nichts ersetzt (d. h. alle Leerzeichen werden entfernt):
SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
'( ){1,}',
'') AS result;
+------------------------------------------+
| RESULT |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+
Im folgenden Beispiel wird die Zeichenfolge times
abgeglichen und durch die Zeichenfolge days
ersetzt. Der Abgleich beginnt beim ersten Zeichen in der Zeichenfolge und ersetzt das zweite Vorkommen der Teilzeichenfolge:
SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
'times',
'days',
1,
2) AS result;
+----------------------------------------------------+
| RESULT |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+
Im folgenden Beispiel werden Rückverweise verwendet, um die Zeichenfolge firstname middlename lastname
als lastname, firstname middlename
neu zu ordnen und zwischen lastname
und firstname
ein Komma einzufügen:
SELECT REGEXP_REPLACE('firstname middlename lastname',
'(.*) (.*) (.*)',
'\\3, \\1 \\2') AS name_sort;
+--------------------------------+
| NAME_SORT |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+