Kategorien:

Zeichenfolgenfunktionen (reguläre Ausdrücke)

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> ] )
Copy

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. Dabei n 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;
    
    Copy
    +----------------+
    | 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;
Copy
+------------------------------------------+
| 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;
Copy
+----------------------------------------------------+
| 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;
Copy
+--------------------------------+
| NAME_SORT                      |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+