REGEXP_ Funktion REPLACE - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

REGEXP_ Funktion REPLACE

Durchsucht eine Zeichenfolge nach einem regulären Ausdrucksmuster und ersetzt jedes Vorkommen des Musters durch die angegebene Zeichenfolge. REGEXP_ REPLACE ähnelt derREPLACEFunktion, ermöglicht es Ihnen jedoch, eine Zeichenfolge nach einem Muster für reguläre Ausdrücke zu durchsuchen. Weitere Informationen zu regulären Ausdrücken finden Sie unter POSIXOperatoren und Reguläre Ausdrücke in Wikipedia.

REGEXP_ REPLACE ähnelt dem TRANSLATEFunktion und dem, mit dem UnterschiedREPLACEFunktion, dass TRANSLATE es mehrere Einzelzeichen ersetzt und eine ganze Zeichenfolge durch eine andere REPLACE ersetzt, während Sie mit REGEXP _ eine Zeichenfolge nach einem Muster für reguläre Ausdrücke durchsuchen REPLACE können.

Syntax

REGEXP_REPLACE( source_string, pattern [, replace_string [ , position [, parameters ] ] ] )

Argumente

source_string

Ein CHAR- oder VARCHAR-Zeichenfolgeausdruck (beispielsweise ein Spaltenname), der gesucht werden soll.

pattern

Ein Zeichenkettenliteral von UTF -8, das ein Muster für reguläre Ausdrücke darstellt. Weitere Informationen finden Sie unter POSIXOperatoren.

replace_string

(Optional) Ein CHAR- oder VARCHAR-Zeichenfolgeausdruck (beispielsweise ein Spaltenname), der jedes Vorkommen eines Musters ersetzt. Der Standardwert ist eine leere Zeichenfolge ("").

position

(Optional) Eine positive Ganzzahl, die die Position innerhalb von source_string angibt, an der die Suche gestartet werden soll. Die Position basiert auf der Anzahl der Zeichen, nicht der Bytes. Daher werden Zeichen mit mehreren Bytes als einzelne Zeichen gezählt. Der Standardwert ist 1. Wenn position kleiner als 1 ist, beginnt die Suche mit dem ersten Zeichen von source_string. Wenn position größer als die Anzahl der Zeichen in source_string ist, ist das Ergebnis source_string.

parameters (Parameter

(Optional) Ein oder mehrere Zeichenfolgenliterale, die angeben, wie die Funktion mit dem Muster übereinstimmt. Die folgenden Werte sind möglich:

  • c – Übereinstimmung mit Unterscheidung von Groß- und Kleinschreibung durchführen. Die Standardeinstellung ist, beim Abgleich die Groß- und Kleinschreibung zu beachten.

  • i – Übereinstimmung ohne Unterscheidung von Groß- und Kleinschreibung durchführen.

  • p — Interpretiert das Muster mit dem Perl-kompatiblen Dialekt regulärer Ausdrücke ()PCRE. Weitere Informationen PCRE dazu finden Sie unter Perl-kompatible reguläre Ausdrücke in Wikipedia.

Rückgabetyp

VARCHAR

Wenn pattern oder replace_string NULL sind, ist der Rückgabewert NULL.

Beispiele

Verwenden Sie das folgende Beispiel, um alle Vorkommen der Zeichenfolge FOX innerhalb des Werts quick brown fox zu ersetzen, wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird.

SELECT REGEXP_REPLACE('the fox', 'FOX', 'quick brown fox', 1, 'i'); +---------------------+ | regexp_replace | +---------------------+ | the quick brown fox | +---------------------+

Das folgende Beispiel verwendet ein im PCRE Dialekt geschriebenes Muster, um Wörter zu finden, die mindestens eine Zahl und einen Kleinbuchstaben enthalten. Es verwendet den ?= Operator, der eine bestimmte Vorausschau-Konnotation in hat. PCRE Verwenden Sie das folgende Beispiel, um alle Vorkommen eines solchen Worts durch den Wert [hidden] zu ersetzen.

SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'p'); +-------------------------------+ | regexp_replace | +-------------------------------+ | [hidden] plain A1234 [hidden] | +-------------------------------+

Das folgende Beispiel verwendet ein im PCRE Dialekt geschriebenes Muster, um Wörter zu finden, die mindestens eine Zahl und einen Kleinbuchstaben enthalten. Es verwendet den ?= Operator, der eine bestimmte Vorausschau-Konnotation in hat. PCRE Verwenden Sie das folgende Beispiel, um alle Vorkommen eines solchen Worts mit dem Wert [hidden] zu ersetzen. Dies unterscheidet sich insofern vom vorherigen Beispiel, als dass nicht zwischen Groß- und Kleinschreibung unterschieden wird.

SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'ip'); +----------------------------------+ | regexp_replace | +----------------------------------+ | [hidden] plain [hidden] [hidden] | +----------------------------------+

In den folgenden Beispielen werden Daten aus der USERS Tabelle in der TICKIT Beispieldatenbank verwendet. Weitere Informationen finden Sie unter Beispieldatenbank.

Verwenden Sie das folgende Beispiel, um @ und den Domain-Name aus E-Mail-Adressen zu löschen.

SELECT email, REGEXP_REPLACE(email, '@.*\\.(org|gov|com|edu|ca)$') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+-----------------------+ | email | regexp_replace | +-----------------------------------------------+-----------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut | | sed@lacusUtnec.ca | sed | +-----------------------------------------------+-----------------------+

Verwenden Sie das folgende Beispiel, um die Domain-Namen von E-Mail-Adressen durch internal.company.com zu ersetzen.

SELECT email, REGEXP_REPLACE(email, '@.*\\.[[:alpha:]]{2,3}','@internal.company.com') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+--------------------------------------------+ | email | regexp_replace | +-----------------------------------------------+--------------------------------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero@internal.company.com | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique@internal.company.com | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut@internal.company.com | | sed@lacusUtnec.ca | sed@internal.company.com | +-----------------------------------------------+--------------------------------------------+