Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Funktionsweise der Funktion REGEXP_SUBSTR() in MySQL

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 Argument

Sie 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.