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.
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.
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
SELECT REGEXP_REPLACE(
'Red Yellow RED Blue Red Green Blue', 'R.d','Orange',1,2,'c')
FROM sysibm.sysdummy1Das Ergebnis ist 'Red Yellow RED Blue Orange Green Blue'.