REGEXP_REPLACE Skalarfunktion

Die Skalarfunktion REGEXP_REPLACE gibt eine modifizierte Version der Quellenzeichenfolge zurück, bei der Vorkommen des in der Quellenzeichenfolge gefundenen regulären Ausdrucksmusters durch die angegebene Ersetzungszeichenfolge ersetzt werden.

Read syntax diagramSkip visual syntax diagramREGEXP_REPLACE(source-string ,pattern-expression,replacement-string,start,occurrence,flags ,CODEUNITS32,CODEUNITS16OCTETS )

Das Schema ist SYSIBM.

Quellenzeichenfolge
Ein Ausdruck, der die Zeichenfolge angibt, in der die Suche stattfinden soll. Dieser Ausdruck muss eine integrierte Zeichenfolge, Grafikzeichenfolge, einen numerischen Wert, einen booleschen Wert oder einen Wert für Datum und Uhrzeit zurückgeben. Ein numerischer Wert, ein boolescher Wert oder ein Wert für Datum und Uhrzeit wird implizit in VARCHAR umgesetzt, bevor die Funktion ausgewertet wird. Eine Zeichenfolge kann das Attribut FOR BIT DATA nicht angeben (SQLSTATE 42815).
musterausdruck
Ein Ausdruck, der die Zeichenfolge des regulären Ausdrucks angibt, die das Muster für die Suche ist. Dieser Ausdruck muss eine integrierte Zeichenfolge, Grafikzeichenfolge, einen numerischen Wert, einen booleschen Wert oder einen Wert für Datum und Uhrzeit zurückgeben. Ein numerischer Wert, ein boolescher Wert oder ein Wert für Datum und Uhrzeit wird implizit in VARCHAR umgesetzt, bevor die Funktion ausgewertet wird. Die Länge eines CLOB-oder DBCLOB-Ausdrucks darf nicht größer als die maximale Länge eines Datentyps VARCHAR oder VARGRAPHIC sein. Eine Zeichenfolge kann das Attribut FOR BIT DATA nicht angeben (SQLSTATE 42815).
Ersetzungszeichenfolge
Ein Ausdruck, der die Ersetzungszeichenfolge für übereinstimmende Unterzeichenfolgen angibt. Der Ausdruck muss einen Wert zurückgeben, der eine integrierte Zeichenfolge, eine Grafikzeichenfolge, einen numerischen Wert, einen booleschen Wert oder einen Wert für Datum und Uhrzeit ist. Ein numerischer Wert, ein boolescher Wert oder ein Wert für Datum und Uhrzeit wird implizit in VARCHAR umgesetzt, bevor die Funktion ausgewertet wird. Eine Zeichenfolge kann das Attribut FOR BIT DATA nicht angeben (SQLSTATE 42815). Die Standardersatzzeichenfolge ist die leere Zeichenfolge.

Der Inhalt der Ersetzungszeichenfolge kann Verweise zum Erfassen von Gruppentext aus der Suche enthalten, die im Ersetzungstext verwendet werden soll. Diese Referenzen haben das Format '$n' oder' \n ', wobei n die Nummer der Erfassungsgruppe und 0 die gesamte Zeichenfolge darstellt, die dem Muster entspricht. Der Wert für n muss im Bereich 0-9 liegen und darf nicht größer als die Anzahl der Erfassungsgruppen im Muster sein (SQLSTATE 2201V). Zum Beispiel kann entweder '$2' oder '\2' verwendet werden, um auf den Inhalt zu verweisen, der in der Quellenzeichenfolge für die zweite Erfassungsgruppe gefunden wird, die im Musterausdruck angegeben ist. Wenn der Musterausdruck einen Literalverweis auf ein '$'-oder' \ '-Zeichen enthalten muss, muss diesem Zeichen ein' /' -Zeichen als Escapezeichen ('\$' oder' \\ ') vorangestellt werden.

Start
Ein Ausdruck, der die Position innerhalb von Quellenzeichenfolge angibt, an der die Suche beginnen soll. Der Ausdruck muss eine integrierte Zeichenfolge, eine Grafikzeichenfolge, einen booleschen Wert oder einen numerischen Wert zurückgeben. Wenn der Wert nicht vom Typ INTEGER ist, wird er implizit in INTEGER umgesetzt, bevor die Funktion ausgewertet wird. Der Wert der Ganzzahl muss größer-gleich 1 sein. Wenn OCTETS angegeben ist und die Quellenzeichenfolge Grafikdaten ist, muss der Wert der Ganzzahl ungerade sein (SQLSTATE 428GC). Der Standardstartwert ist 1. Siehe Parameterbeschreibung für CODEUNITS16, CODEUNITS32oder OCTETS für die Zeichenfolgeeinheit, die für die Startposition gilt.
Vorkommen
Ein Ausdruck, der angibt, nach welchem Vorkommen des Musterausdrucks in der Quellenzeichenfolge gesucht und ersetzt werden soll. Der Ausdruck muss eine integrierte Zeichenfolge, eine Grafikzeichenfolge, einen booleschen Wert oder einen numerischen Wert zurückgeben. Wenn der Wert nicht vom Typ INTEGER ist, wird er implizit in INTEGER umgesetzt, bevor die Funktion ausgewertet wird. Der Wert für das Vorkommen muss größer-gleich 0 sein. Der Standardwert 0 gibt an, dass alle Vorkommen des Musterausdrucks in der Quellenzeichenfolge ersetzt werden.
Flags
Ein Ausdruck, der Flags angibt, die Aspekte der Mustererkennung steuern. Der Ausdruck muss eine integrierte Zeichenfolge zurückgeben, die das Attribut FOR BIT DATA nicht angibt (SQLSTATE 42815). Die Zeichenfolge kann einen oder mehrere gültige Flagwerte enthalten und die Kombination der Flagwerte muss gültig sein (SQLSTATE 2201T). Eine leere Zeichenfolge entspricht dem Wert 'c'. Der Standardwert für das Flag ist 'c'.
Tabelle 1. Unterstützte Flagwerte
Markierungswert Beschreibung
c Gibt an, dass beim Abgleich die Groß-/Kleinschreibung beachtet werden muss. Dieses Flag ist der Standardwert, wenn 'c' oder' i ' nicht angegeben ist. Dieser Wert darf nicht mit dem Wert 'i' angegeben werden.
i Gibt an, dass beim Abgleich die Groß-/Kleinschreibung nicht beachtet werden muss. Dieser Wert darf nicht mit dem Wert 'c' angegeben werden.
m Gibt an, dass die Eingabedaten mehrere Zeilen enthalten können. Standardmäßig stimmt das Zeichen '^' in einem Muster nur mit dem Anfang der Eingabezeichenfolge überein; das Zeichen ' $' in einem Muster entspricht nur dem Ende der Eingabezeichenfolge. Wenn dieses Flag gesetzt ist, stimmen "^" und "$" auch am Anfang und am Ende jeder Zeile innerhalb der Eingabezeichenfolge überein.
n Gibt an, dass '.' Zeichen in einem Muster entspricht einem Zeilenabschlusszeichen in der Eingabezeichenfolge. Standardmäßig wird das Zeichen '.' Zeichen in einem Muster stimmt nicht mit einem Zeilenabschlusszeichen überein. Ein Paar aus Rücklauf und Zeilenvorschub in der Eingabezeichenfolge verhält sich wie ein einzeiliges Abschlusszeichen und entspricht einem einzelnen "." in einem Muster.
s Gibt an, dass '.' Zeichen in einem Muster entspricht einem Zeilenabschlusszeichen in der Eingabezeichenfolge. Dieser Wert ist ein Synonym für den Wert ' n'.
x Gibt an, dass Leerzeichen in einem Muster ignoriert werden, sofern sie nicht mit Escapezeichen versehen werden.
CODEUNITS16, CODEUNITS32oder OCTE
Gibt die Zeichenfolgeeinheit des Startwerts an:
  • CODEUNITS16 gibt an, dass der Anfangswert in 16 -Bit- UTF-16 -Codeeinheiten ausgedrückt wird.
  • CODEUNITS32 gibt an, dass der Anfangswert in 32 -Bit- UTF-32 -Codeeinheiten ausgedrückt wird. Dies ist die Standardeinstellung.
  • OCTETS gibt an, dass der Anfangswert in Byte ausgedrückt wird.

Wenn die Zeichenfolgeeinheit als CODEUNITS16 oder OCTETS angegeben wird, und wenn die Zeichenfolgeeinheit der Quellenzeichenfolge CODEUNITS32ist, wird ein Fehler zurückgegeben (SQLSTATE 428GC).

Weitere Informationen finden Sie unter "Zeichenfolgeeinheiten in integrierten Funktionen" in Zeichenfolgen.

Result

Das Ergebnis der Funktion ist eine Zeichenfolge. Wenn das zu ersetzende Muster nicht vorkommt und kein Argument null ist, wird die ursprüngliche Zeichenfolge zurückgegeben. Der Datentyp der Zeichenfolge ist derselbe Datentyp wie die Quellenzeichenfolge, mit Ausnahme von CHAR, das zu VARCHAR wird, und VARGRAPHIC, das zu GRAPHIC wird.

Das Längenattribut des Ergebnisdatentyps wird anhand der Längenattribute der Quellenzeichenfolge und der Ersetzungszeichenfolge anhand der folgenden Berechnung bestimmt:
   MIN(MaxTypeLen, LAS+(LAS+1)*LAR)
wobei das Attribut für die maximale Länge MaxTypeLen des Datentyps des Ergebnisses darstellt, LAS das Attribut für die Länge des Datentyps der Quellzeichenfolge darstellt und LAR das Attribut für die Länge des Datentyps der Ersatzzeichenfolge darstellt. Wenn die Ersetzungszeichenfolge nicht angegeben wird, ist der Wert für LAR 0. Wenn die tatsächliche Länge der Ergebniszeichenfolge den Maximalwert für den Rückgabedatentyp überschreitet, wird ein Fehler zurückgegeben (SQLSTATE 54006).

Wenn ein Argument der Funktion REGEXP_REPLACE null sein kann, kann das Ergebnis null sein. Wenn ein Argument null ist, ist das Ergebnis der Nullwert.

Hinweise

  • Die Verarbeitung regulärer Ausdrücke erfolgt über die ICU-Schnittstelle für reguläre Ausdrücke (ICU = International Components for Unicode).
  • Hinweise zu Nicht-Unicode-Datenbanken
    • Ein Muster für reguläre Ausdrücke unterstützt nur Steuerzeichen mit halber Breite. Verwenden Sie einen Zeichenfolgedatentyp für das Musterausdrucksargument. Ein Zeichenfolgedatentyp kann für das Musterausdrucksargument verwendet werden, auch wenn ein Grafikzeichenfolgedatentyp für das Quellenzeichenfolgeargument verwendet wird.
    • Das Quellenzeichenfolgeargument muss ein Grafikzeichenfolgedatentyp sein, wenn das Musterausdruckargument ein Grafikzeichenfolgedatentyp ist.
    • Die Argumente für die Quellenzeichenfolge und die Ersetzungszeichenfolge müssen beide Zeichenfolgedatentypen oder Grafikzeichenfolgedatentypen sein.

Beispiel

Ersetzen Sie bei einer Suche mit Beachtung der Groß-/Kleinschreibung das zweite Vorkommen des Musters 'R.d' durch 'Orange'.
SELECT REGEXP_REPLACE(
   'Red Yellow RED Blue Red Green Blue', 'R.d','Orange',1,2,'c') 
      FROM sysibm.sysdummy1
Das Ergebnis ist 'Red Yellow RED Blue Orange Green Blue'.