In MySQL der REGEXP_SUBSTR()
Die Funktion gibt die Teilzeichenfolge zurück, die mit dem angegebenen regulären Ausdrucksmuster übereinstimmt.
Wenn es keine Übereinstimmung gibt (d. h. die Eingabezeichenfolge enthält die Teilzeichenfolge nicht), ist das Ergebnis NULL
.
Syntax
Die Syntax lautet wie folgt:
REGEXP_SUBSTR(expr, pat[, pos[, Vorkommen[, Übereinstimmungstyp]]])
Wobei expr
ist die Eingabezeichenfolge und pat
ist das reguläre Ausdrucksmuster für die Teilzeichenfolge.
Die optionale pos
Mit dem Argument können Sie eine Position innerhalb der Zeichenfolge angeben, an der die Suche gestartet werden soll. Wenn weggelassen, beginnt es an Position 1.
Das optionale occurrence
Mit dem Argument können Sie angeben, nach welchem Vorkommen der Übereinstimmung gesucht werden soll. Wenn weggelassen, wird das erste Vorkommen verwendet (Vorkommen 1).
Der optionale match_type
Argument ermöglicht es Ihnen, den regulären Ausdruck zu verfeinern. Beispielsweise können Sie dieses Argument verwenden, um die Groß-/Kleinschreibung zu bestimmen oder nicht.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein einfaches Beispiel:
SELECT REGEXP_SUBSTR('Thailand or Cambodia', 'l.nd') Ergebnis;
Ergebnis:
+--------+| Ergebnis |+--------+| Land |+--------+
In diesem Fall gibt es eine Übereinstimmung und der Teilstring wird zurückgegeben.
Beispiel 2 – Mehrere Übereinstimmungen
Wenn es mehrere Übereinstimmungen innerhalb der Zeichenfolge gibt, wird standardmäßig die erste zurückgegeben (obwohl Sie bei Bedarf ein anderes Vorkommen angeben können. Dazu kommen wir bald):
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd') Ergebnis;
Ergebnis:
+--------+| Ergebnis |+--------+| Ausleihen |+--------+
Beispiel 3 – Keine Übereinstimmung
Hier ist ein Beispiel, bei dem es keine Übereinstimmung gibt:
SELECT REGEXP_SUBSTR('Lend for land', '^C') Ergebnis;
Ergebnis:
+--------+| Ergebnis |+--------+| NULL |+--------+
Es gibt keine Übereinstimmung, also ist das Ergebnis NULL
.
Beispiel 4 – Die pos
Argument
Hier ist ein Beispiel für die Angabe einer Startposition:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Ergebnis;
Ergebnis:
+--------+| Ergebnis |+--------+| Ausschneiden |+--------+
Wir haben an Position 2 begonnen, die nach dem Beginn des ersten Vorkommens kommt, also wird stattdessen das nächste Vorkommen zurückgegeben.
Hier ist ein weiteres Beispiel:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 6) 'Pos 6';
Ergebnis:
+-------+-------+-------+| Pos. 1 | Pos. 2 | Pos 6 |+-------+-------+-------+| Katze | Schnitt | Kinderbett |+-------+-------+-------+
Beispiel 5 – Das occurrence
Argument
Hier ist ein Beispiel für die Verwendung von occurrence
Streit. In allen Fällen beginnen wir bei Position 1:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Vorkommen 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Vorkommen 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Vorkommen 3';
Ergebnis:
+--------------+-------------+-------------+| Vorkommen 1 | Vorkommen 2 | Vorkommen 3 |+--------------+-------------+--------------+| Katze | Schnitt | Kinderbett |+--------------+-------------+-------------+Wenn wir jedoch an einer anderen Position beginnen, ist das Ergebnis anders:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Vorkommen 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Vorkommen 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Vorkommen 3';Ergebnis:
+--------------+-------------+-------------+| Vorkommen 1 | Vorkommen 2 | Vorkommen 3 |+--------------+-------------+--------------+| Schnitt | Kinderbett | NULL |+--------------+-------------+--------------+Dies geschah, weil unsere Startposition kam, nachdem das erste Ereignis begonnen hatte. Daher wurde Vorkommen 2 zu Vorkommen 1 und Vorkommen 3 zu Vorkommen 2. Und da es keine Vorkommen mehr gab, war das Ergebnis von Vorkommen 3 NULL (d. h. es gab kein Vorkommen 3).
Beispiel 6 – Der
match_type
ArgumentSie können ein zusätzliches Argument angeben, um den Übereinstimmungstyp zu bestimmen. Auf diese Weise können Sie beispielsweise angeben, ob bei der Übereinstimmung zwischen Groß- und Kleinschreibung unterschieden wird, ob Zeilenabschlüsse eingefügt werden sollen usw.
Hier ist ein Beispiel für die Angabe einer Übereinstimmung mit Berücksichtigung der Groß- und Kleinschreibung und einer Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Groß-/Kleinschreibung';Ergebnis:
+----------------+------------------+| Groß-/Kleinschreibung beachten | Groß-/Kleinschreibung wird nicht beachtet |+----------------+-------------------------------+| NULL | Katze |+----------------+------------------+Der
match_type
Das Argument kann die folgenden Zeichen enthalten:
c
- Groß-/Kleinschreibung beachten.
i
- Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung.
m
- Mehrzeiliger Modus. Zeilenabschlusszeichen innerhalb der Zeichenfolge erkennen. Das Standardverhalten besteht darin, Zeilenabschlusszeichen nur am Anfang und am Ende des Zeichenfolgenausdrucks abzugleichen.
n
- Der
.
Zeichen stimmt mit Zeilenabschlusszeichen überein. Der Standardwert ist.
Anpassung, um am Ende einer Zeile zu stoppen. u
- Nur Unix-Zeilenenden. Nur das Newline-Zeichen wird durch den
.
als Zeilenende erkannt ,^
, und$
Übereinstimmungsoperatoren.