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.
REGEXPSUBSTRFunktion _
Gibt Zeichen aus einer Zeichenfolge zurück, indem diese nach einem regulären Ausdrucksmuster durchsucht wird. REGEXP_ SUBSTR ähnelt der SUBSTRINGFunktion Funktion, ermöglicht es Ihnen jedoch, eine Zeichenfolge nach einem Muster für reguläre Ausdrücke zu durchsuchen. Wenn die Funktion den regulären Ausdruck keinem Zeichen in der Zeichenfolge zuordnen kann, wird eine leere Zeichenfolge zurückgegeben. Weitere Informationen zu regulären Ausdrücken finden Sie unter POSIXOperatoren und Reguläre Ausdrücke
Syntax
REGEXP_SUBSTR( source_string, pattern [, position [, occurrence [, parameters ] ] ] )
Argumente
- source_string
-
Ein Zeichenfolgeausdruck, der durchsucht werden soll.
- pattern
-
Ein Zeichenkettenliteral von UTF -8, das ein Muster für reguläre Ausdrücke darstellt. Weitere Informationen finden Sie unter POSIXOperatoren.
- position
-
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 eine leere Zeichenfolge ("").
- occurrence
-
Eine positive Ganzzahl, die angibt, welches Vorkommen des Musters verwendet werden soll. REGEXP_ SUBSTR überspringt das erste Vorkommen von -1 Treffern. Der Standardwert ist 1. Wenn das Vorkommen kleiner als 1 oder größer als die Anzahl der Zeichen in source_string ist, wird die Suche ignoriert und das Ergebnis ist. NULL
- parameters (Parameter
-
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.
-
e – Teilzeichenfolge mittels eines Unterausdrucks extrahieren.
Wenn das Muster einen Unterausdruck enthält, SUBSTR entspricht REGEXP _ einer Teilzeichenfolge, wobei der erste Unterausdruck im Muster verwendet wird. Ein Unterausdruck ist ein Ausdruck innerhalb des Musters, der in Klammern gesetzt ist. Bei dem Muster
'This is a (\\w+)'
beispielsweise wird der erste Ausdruck mit der Zeichenfolge'This is a '
, gefolgt von einem Wort abgeglichen. Anstatt ein Muster zurückzugeben, gibt REGEXP _ SUBSTR mit deme
Parameter nur die Zeichenfolge innerhalb des Unterausdrucks zurück.REGEXP_ SUBSTR berücksichtigt nur den ersten Unterausdruck; weitere Unterausdrücke werden ignoriert. Wenn das Muster keinen Unterausdruck hat, ignoriert REGEXP _ SUBSTR den 'e'-Parameter.
-
p — Interpretiert das Muster mit dem Perl-kompatiblen Dialekt für reguläre Ausdrücke (). PCRE Weitere Informationen PCRE dazu finden Sie unter Perl-kompatible reguläre Ausdrücke
in Wikipedia.
-
Rückgabetyp
VARCHAR
Beispiele
Im folgenden Beispiel wird der E-Mail-Adresse-Abschnitt zwischen dem Zeichen @ und der Domänenerweiterung zurückgegeben. Die abgefragten users
-Daten stammen aus den Amazon-Redshift-Beispieldaten. Weitere Informationen finden Sie unter Beispieldatenbank.
SELECT email, regexp_substr(email,'@[^.]*') FROM users ORDER BY userid LIMIT 4;
email | regexp_substr -----------------------------------------------+-------------------------- Suspendisse.tristique@nonnisiAenean.edu | @nonnisiAenean amet.faucibus.ut@condimentumegetvolutpat.ca | @condimentumegetvolutpat sed@lacusUtnec.ca | @lacusUtnec Cum@accumsan.com | @accumsan
Im folgenden Beispiel wird der Teil der Eingabe zurückgegeben, der dem ersten Vorkommen der Zeichenfolge FOX
entspricht, wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird.
SELECT regexp_substr('the fox', 'FOX', 1, 1, 'i');
regexp_substr --------------- fox
Im folgenden Beispiel wird der Teil der Eingabe zurückgegeben, der dem zweiten Vorkommen der Zeichenfolge FOX
entspricht, wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird. Das Ergebnis ist NULL
(leer), weil es kein zweites Vorkommen gibt.
SELECT regexp_substr('the fox', 'FOX', 1, 2, 'i');
regexp_substr ---------------
Das folgende Beispiel gibt den ersten Teil der Eingabe zurück, der mit Kleinbuchstaben beginnt. Dies ist funktionell identisch mit derselben SELECT Anweisung ohne den c
Parameter.
SELECT regexp_substr('THE SECRET CODE IS THE LOWERCASE PART OF 1931abc0EZ.', '[a-z]+', 1, 1, 'c');
regexp_substr --------------- abc
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 In diesem Beispiel wird der Teil der Eingabe zurückgegeben, der dem zweiten Wort entspricht.
SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'p');
regexp_substr --------------- a1234
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 In diesem Beispiel wird der der Teil der Eingabe zurückgegeben, der dem zweiten Wort entspricht. Dies unterscheidet sich insofern vom vorherigen Beispiel, als dass nicht zwischen Groß- und Kleinschreibung unterschieden wird.
SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'ip');
regexp_substr --------------- A1234
Im folgenden Beispiel wird ein Unterausdruck verwendet, um die zweite Zeichenfolge zu finden, die dem Muster 'this is a (\\w+)'
entspricht, wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird. Der Unterausdruck in Klammern wird zurückgegeben.
SELECT regexp_substr( 'This is a cat, this is a dog. This is a mouse.', 'this is a (\\w+)', 1, 2, 'ie');
regexp_substr --------------- dog