In MariaDB 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 eine leere Zeichenfolge.
Syntax
Die Syntax sieht so aus:
REGEXP_SUBSTR(subject,pattern)
Wobei subject
ist die Eingabezeichenfolge und pattern
ist das reguläre Ausdrucksmuster für die Teilzeichenfolge.
Beachten Sie, dass zum Zeitpunkt des Schreibens die MariaDB-Version von REGEXP_SUBSTR()
akzeptiert weniger Argumente als MySQLs REGEXP_SUBSTR()
. Die MySQL-Version ermöglicht es Ihnen, Argumente für die Startposition der Suche bereitzustellen, nach welchem Vorkommen gesucht werden soll, sowie eine Möglichkeit, den regulären Ausdruck zu verfeinern.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd');
Ergebnis:
+--------------------------------------------------+| REGEXP_SUBSTR('Thailand und Laos', 'l.nd') |+---------------------------------------------- ----------+| Grundstück |+----------------------------------------------------+In diesem Fall gibt es eine Übereinstimmung und der Teilstring wird zurückgegeben.
Mehrere Übereinstimmungen
Wenn es mehrere Übereinstimmungen innerhalb der Zeichenfolge gibt, wird standardmäßig die erste zurückgegeben:
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd');
Ergebnis:
+----------------------------------------+| REGEXP_SUBSTR('Grundstück verleihen', 'l.nd') |+----------------------------------------------- ------+| Ausleihen |+----------------------------------------+Keine Übereinstimmung
Hier ist ein Beispiel, bei dem es keine Übereinstimmung gibt:
SELECT REGEXP_SUBSTR('Lend for land', '^C');
Ergebnis:
+--------------------------------------+| REGEXP_SUBSTR('Grundstück verleihen', '^C') |+------------------------------ ---+| |+--------------------------------------------------+
Es gibt keine Übereinstimmung, daher ist das Ergebnis eine leere Zeichenfolge.
Groß-/Kleinschreibung
Der REGEXP_SUBSTR()
Funktion folgt den Regeln der Groß-/Kleinschreibung der effektiven Sortierung. Der Abgleich erfolgt bei Sortierungen ohne Berücksichtigung der Groß- und Kleinschreibung und bei Sortierungen mit Berücksichtigung der Groß- und Kleinschreibung und bei binären Daten.
Hier ist ein Beispiel:
SELECT
REGEXP_SUBSTR('My Cats', 'c.t') AS "My Default",
REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_ci, 'c.t') AS "Case Insensitive",
REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_cs, 'c.t') AS "Case Sensitive";
Ergebnis:
+------------+-------------+------------- --+| Mein Standard | Groß-/Kleinschreibung wird nicht beachtet | Groß-/Kleinschreibung beachten |+------------+-------------+------------- --+| Katze | Katze | |+------------+------------------+---------------- +
Bei meiner Standardsortierung wird die Groß-/Kleinschreibung nicht beachtet. Die anderen beiden Zeichenfolgen wurden zu einer Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung bzw. einer Sortierung mit Berücksichtigung der Groß-/Kleinschreibung gezwungen.
Bereitstellung eines BINARY
string ist auch case sensitive (siehe unten).
Binäre Zeichenfolgen
Übergeben eines BINARY
string wirkt sich auch auf die Groß-/Kleinschreibung aus. Mit BINARY
Zeichenketten unterscheidet sich ein Großbuchstabe von seinem Kleinbuchstaben:
Beispiel:
SELECT
REGEXP_SUBSTR('My Cats', 'c.t') AS "Character",
REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary";
Ergebnis:
+-----------+--------+| Zeichen | Binär |+-----------+--------+| Katze | |+-----------+--------+
Folgendes passiert, wenn wir die Groß-/Kleinschreibung ändern:
SELECT
REGEXP_SUBSTR('My Cats', 'C.t') AS "Character",
REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary";
Ergebnis:
+-----------+--------+| Zeichen | Binär |+-----------+--------+| Katze | Katze |+-----------+--------+
Null-Argumente
Übergabe von null
da jedes Argument zu null
führt :
SELECT
REGEXP_SUBSTR(null, 'c.t') AS "1",
REGEXP_SUBSTR('Cat', null) AS "2",
REGEXP_SUBSTR(null, null) AS "3";
Ergebnis:
+------+------+------+| 1 | 2 | 3 |+------+------+------+| NULL | NULL | NULL |+------+------+------+
Falsche Anzahl von Argumenten
Das Übergeben der falschen Anzahl von Argumenten oder keiner Argumente führt zu einem Fehler:
SELECT REGEXP_SUBSTR('Cat');
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'REGEXP_SUBSTR'