MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie REGEXP_SUBSTR() in MariaDB funktioniert

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'