- Kategorien:
REGEXP_SUBSTR¶
Gibt die Teilzeichenfolge zurück, die mit einem regulären Ausdruck innerhalb einer Zeichenfolge übereinstimmt.
Syntax¶
Argumente¶
Benötigt:
subjectDie Zeichenfolge, nach der gesucht werden soll.
patternAbzugleichendes Muster.
Richtlinien zur Angabe von Mustern finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).
Optional:
positionAnzahl der Zeichen ab dem Anfang der Zeichenfolge, an dem die Funktion mit der Suche nach Übereinstimmungen beginnt. Der Wert muss eine positive Ganzzahl sein.
Standard:
1(die Suche nach einer Übereinstimmung beginnt beim ersten Zeichen links)occurrenceGibt das erste Auftreten des Musters an, ab dem Übereinstimmungen zurückgegeben werden sollen.
Die Funktion überspringt die ersten
occurrence - 1Übereinstimmungen. Wenn es beispielsweise 5 Übereinstimmungen gibt und Sie3für dasoccurrence-Argument angeben, ignoriert die Funktion die ersten beiden Übereinstimmungen und gibt die dritte, vierte und fünfte Übereinstimmung zurück.Standard:
1regex_parametersZeichenfolge aus einem oder mehreren Zeichen, in der die Parameter angegeben sind, die zur Suche nach Übereinstimmungen verwendet werden. Unterstützte Werte:
Parameter
Beschreibung
cAbgleich, bei dem zwischen Groß- und Kleinschreibung unterschieden wird
iAbgleich ohne Berücksichtigung der Groß-/Kleinschreibung
mMehrzeiliger Modus.
eUntergeordnete Übereinstimmungen extrahieren
sPOSIX-Platzhalterzeichen
.im einzeiligen Modus stimmt mit\nübereinStandard:
cWeitere Informationen dazu finden Sie unter Angeben der Parameter für reguläre Ausdrücke.
Bemerkung
Standardmäßig gibt REGEXP_SUBSTR den gesamten übereinstimmenden Teil des Subjekts zurück. Wenn jedoch der Parameter
e(für „extrahieren“) angegeben ist, gibt REGEXP_SUBSTR nur den Teil des Subjekts zurück, der mit der ersten Gruppe im Muster übereinstimmt. Wenn zwareangegeben ist, aber kein Wert fürgroup_num, dann ist der Wert vongroup_numstandardmäßig 1 (die erste Gruppe). Wenn das Muster keinen Teilausdruck enthält, verhält sich REGEXP_SUBSTR so, als wäreenicht gesetzt. Beispiele, dieeverwenden, finden Sie im Abschnitt Beispiele (unter diesem Thema).group_numGibt an, welche Gruppe extrahiert werden soll. Gruppen werden im regulären Ausdruck mithilfe von Klammern angegeben.
Wenn eine
group_numangegeben ist, ermöglicht Snowflake das Extrahieren, auch wenn die Option'e'nicht angegeben wurde. Das'e'ist impliziert.Snowflake unterstützt bis zu 1.024 Gruppen.
Beispiele, die
group_numverwenden, finden Sie im Abschnitt Beispiele (unter diesem Thema).
Rückgabewerte¶
Gibt einen Wert vom Typ VARCHAR zurück, der mit der Teilzeichenfolge übereinstimmt.
Die Funktion gibt in den folgenden Fällen NULL zurück:
Es wurde keine Übereinstimmung gefunden.
Alle Argumente sind NULL.
Nutzungshinweise¶
Weitere Informationen zur Verwendung regulärer Ausdrücke finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).
Sortierungsdetails¶
Arguments with collation specifications currently aren’t supported.
Beispiele¶
Die Dokumentation zur Funktion REGEXP_INSTR enthält viele Beispiele, die sowohl REGEXP_SUBSTR als auch REGEXP_INSTR verwenden. Vielleicht möchten Sie sich auch diese Beispiele ansehen.
In den Beispielen werden die unten erstellten Zeichenfolgen verwendet:
Die Zeichenfolgen haben die folgenden Eigenschaften:
Die Zeichenfolge mit einer
idvon2hat mehrere Vorkommen des Wortes „the“.Die Zeichenfolge mit einer
idvon3hat mehrere Vorkommen des Wortes „the“ mit zusätzlichen Leerzeichen zwischen den Wörtern.Die Zeichenfolge mit einer
idvon4enthält die Zeichenfolge „the“ innerhalb mehrerer Wörter („thespian“ und „theater“), aber ohne das Wort „the“ selbst.
Die folgenden Beispiele rufen die Funktion REGEXP_SUBSTR auf.
Aufrufen der Funktion REGEXP_SUBSTR in einer SELECT-Liste¶
Rufen Sie die Funktion REGEXP_SUBSTR in einer SELECT-Liste auf, um Werte zu extrahieren oder anzuzeigen, die mit einem Muster übereinstimmen.
In Beispiel wird nach dem ersten Vorkommen des Wortes the gesucht, gefolgt von einem oder mehreren Nicht-Wort-Zeichen (z. B. dem Leerzeichen, das Wörter trennt), gefolgt von einem oder mehreren Wort-Zeichen.
„Wortzeichen“ umfassen nicht nur die Buchstaben a–z und A–Z, sondern auch den Unterstrich („_“) und die Dezimalziffern 0–9, jedoch keine Leerzeichen, Satzzeichen und so weiter.
Suchen Sie ab Position 1 der Zeichenfolge nach dem zweiten Vorkommen des Wortes the, gefolgt von einem oder mehreren Nicht-Wort-Zeichen, gefolgt von einem oder mehreren Wort-Zeichen.
Suchen Sie ab Position 1 der Zeichenfolge nach dem zweiten Vorkommen des Wortes the, gefolgt von einem oder mehreren Nicht-Wort-Zeichen, gefolgt von einem oder mehreren Wort-Zeichen.
Anstatt den gesamten Treffer zurückzugeben, geben Sie nur die „Gruppe“ zurück (z. B. den Teil der Teilzeichenkette, der mit dem Teil des regulären Ausdrucks in Klammern übereinstimmt). In diesem Fall sollte der zurückgegebene Wert das Wort nach „the“ sein.
In diesem Beispiel wird gezeigt, wie das zweite Wort aus den ersten, zweiten und dritten Übereinstimmungen eines Zwei-Wort-Musters abgerufen wird, in dem das erste Wort A ist. Dieses Beispiel zeigt auch, dass der Versuch, über das letzte Muster hinauszugehen, Snowflake dazu veranlasst, NULL zurückzugeben.
Erstellen Sie zunächst eine Tabelle und fügen Sie Daten ein:
Führen Sie die Abfrage aus:
In diesem Beispiel wird gezeigt, wie die erste, zweite und dritte Gruppe innerhalb des ersten Auftretens des Musters abgerufen werden. In diesem Fall sind die zurückgegebenen Werte die einzelnen Buchstaben des Wortes MAN.
Hier sind einige zusätzliche Beispiele.
Erstellen Sie eine Tabelle, und fügen Sie Daten ein:
Gibt die erste Übereinstimmung zurück, die ein klein geschriebenes o enthält, durch Abgleich einer Wortgrenze (\b), gefolgt von null oder mehr Wortzeichen (\S), dem Buchstaben o und dann null oder mehr Wortzeichen bis zur nächsten Wortgrenze:
Gibt die erste Übereinstimmung zurück, die ein klein geschriebenes o enthält, beginnend mit dem dritten Zeichen im Subjekt:
Gibt die dritte Übereinstimmung zurück, die ein klein geschriebenes o enthält, beginnend mit dem dritten Zeichen im Subjekt:
Gibt die dritte Übereinstimmung zurück, die ein klein geschriebenes o enthält, beginnend mit dem dritten Zeichen im Subjekt, wobei Groß- und Kleinschreibung nicht berücksichtigt werden:
Dieses Beispiel zeigt, dass Sie alle Parameter für reguläre Ausdrücke explizit weglassen können, indem Sie eine leere Zeichenfolge angeben.
Im folgenden Beispiel werden sich überlappende Vorkommen veranschaulicht: Erstellen Sie zunächst eine Tabelle und fügen Sie Daten ein:
Führen Sie eine Abfrage aus, die das zweite Auftreten des folgenden Musters in jeder Zeile findet: ein Satzzeichen gefolgt von Ziffern und Buchstaben, gefolgt von einem Satzzeichen.
Im folgenden Beispiel wird aus dem Zugriffsprotokoll eines Apache HTTP-Servers ein JSON-Objekt erstellt, wobei Mustererkennung und Verkettung zum Einsatz kommen: Erstellen Sie zunächst eine Tabelle und fügen Sie Daten ein:
Führen Sie eine Abfrage durch:
Aufrufen der Funktion REGEXP_SUBSTR in einer WHERE-Klausel¶
Rufen Sie die Funktion REGEXP_SUBSTR in einer WHERE-Klausel auf, um nach Zeilen zu filtern, die Werte enthalten, die mit einem Muster übereinstimmen. Durch die Verwendung der Funktion können Sie mehrere OR-Bedingungen vermeiden.
Im folgenden Beispiel wird die Tabelle demo2 abgefragt, die Sie zuvor erstellt haben, um Zeilen zurückzugeben, die entweder die Zeichenfolge best oder die Zeichenfolge thespian enthalten. Fügen Sie IS NOT NULL zur Bedingung hinzu, um Zeilen zurückzugeben, die dem Muster entsprechen, also die Zeilen, in denen die Funktion REGEXP_SUBSTR nicht NULL zurückgegeben hat:
Sie können AND-Bedingungen, um Zeilen zu finden, die mehrere Mustern entsprechen. Die folgende Abfrage gibt zum Beispiel Zeilen zurück, die entweder die Zeichenfolge best oder die Zeichenfolge thespian enthalten und mit der Zeichenfolge It beginnen: