REGEXPINSTRFunktion _ - 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.

REGEXPINSTRFunktion _

Durchsucht eine Zeichenfolge nach einem regulären Ausdrucksmuster und gibt eine Ganzzahl zurück, die die Anfangs- oder Endposition der übereinstimmenden Unterzeichenfolge angibt. Wenn keine Übereinstimmung gefunden wird, gibt die Funktion 0 zurück. REGEXP_ INSTR ähnelt der POSITIONFunktion, 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.

Syntax

REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )

Argumente

source_string

Ein Zeichenfolgenausdruck (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.

position

(optional) Ein positiver INTEGER, 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 0.

occurrence

(Optional) Eine positive INTEGER, die angibt, welches Vorkommen des Musters verwendet werden soll. REGEXP_ INSTR überspringt die ersten Treffer. occurrence-1 Der Standardwert ist 1. Wenn occurrence kleiner als 1 oder größer als die Anzahl der Zeichen in source_string ist, wird die Suche ignoriert und das Ergebnis ist 0.

option

(Optional) Ein Wert, der angibt, ob die Position des ersten Zeichens der Übereinstimmung (0) oder die Position des ersten Zeichens nach dem Ende der Übereinstimmung (1) zurückgegeben werden soll. Ein Wert ungleich null entspricht 1. Der Standardwert ist 0.

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.

  • e – Teilzeichenfolge mittels eines Unterausdrucks extrahieren.

    Wenn das Muster einen Unterausdruck enthält, INSTR entspricht REGEXP _ einer Teilzeichenfolge, wobei der erste Unterausdruck im Muster verwendet wird. REGEXP_ INSTR berücksichtigt nur den ersten Unterausdruck; weitere Unterausdrücke werden ignoriert. Wenn das Muster keinen Unterausdruck hat, ignoriert REGEXP _ INSTR 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

Ganzzahl

Beispiele

Die folgenden Beispiele verwenden Daten aus der USERS Tabelle in der TICKIT Beispieldatenbank. Weitere Informationen finden Sie unter Beispieldatenbank.

Verwenden Sie das folgende Beispiel, um nach dem Zeichen @ zu suchen, mit dem Domain-Namen beginnen. Anschließend wird die Anfangsposition der ersten Übereinstimmung zurückgegeben.

SELECT email, REGEXP_INSTR(email, '@[^.]*') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+--------------+ | email | regexp_instr | +-----------------------------------------------+--------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | 21 | | Suspendisse.tristique@nonnisiAenean.edu | 22 | | amet.faucibus.ut@condimentumegetvolutpat.ca | 17 | | sed@lacusUtnec.ca | 4 | +-----------------------------------------------+--------------+

Verwenden Sie das folgende Beispiel, um nach Varianten des Worts Center zu suchen. Anschließend wird die Anfangsposition der ersten Übereinstimmung zurückgegeben.

SELECT venuename, REGEXP_INSTR(venuename,'[cC]ent(er|re)$') FROM venue WHERE REGEXP_INSTR(venuename,'[cC]ent(er|re)$') > 0 ORDER BY venueid LIMIT 4; +-----------------------+--------------+ | venuename | regexp_instr | +-----------------------+--------------+ | The Home Depot Center | 16 | | Izod Center | 6 | | Wachovia Center | 10 | | Air Canada Centre | 12 | +-----------------------+--------------+

Verwenden Sie das folgende Beispiel, um die Anfangsposition des ersten Vorkommens der Zeichenfolge FOX zu finden, wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird.

SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i'); +--------------+ | regexp_instr | +--------------+ | 5 | +--------------+

Verwenden Sie das folgende Beispiel, um mithilfe eines im PCRE Dialekt geschriebenen Musters nach Wörtern zu suchen, die mindestens eine Zahl und einen Kleinbuchstaben enthalten. Es verwendet den ?= Operator, der eine bestimmte Vorausschau-Konnotation in hat. PCRE In diesem Beispiel wird die Anfangsposition des zweiten Wortes gefunden.

SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p'); +--------------+ | regexp_instr | +--------------+ | 21 | +--------------+

Verwenden Sie das folgende Beispiel, um mithilfe eines im PCRE Dialekt geschriebenen Musters nach Wörtern zu suchen, die mindestens eine Zahl und einen Kleinbuchstaben enthalten. Es verwendet den ?= Operator, der eine bestimmte Vorausschau-Konnotation in hat. PCRE In diesem Beispiel wird die Anfangsposition des zweiten Worts gefunden. Dies unterscheidet sich insofern vom vorherigen Beispiel, als dass nicht zwischen Groß- und Kleinschreibung unterschieden wird.

SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip'); +--------------+ | regexp_instr | +--------------+ | 15 | +--------------+