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

Wie SUBSTRING_INDEX() in MariaDB funktioniert

In MariaDB SUBSTRING_INDEX() ist eine eingebaute Zeichenfolgenfunktion. Es gibt einen Teilstring aus einem String vor einer bestimmten Anzahl von Vorkommen des angegebenen Trennzeichens zurück.

SUBSTRING_INDEX() erfordert mindestens drei Argumente; die Zeichenfolge, das Trennzeichen und die Anzahl (d. h. die Anzahl der Vorkommen dieses Trennzeichens).

Syntax

Die Syntax lautet wie folgt:

SUBSTRING_INDEX(str,delim,count) 

Wobei str ist die Zeichenfolge, delim ist das Trennzeichen und count ist die Anzahl der Vorkommen dieses Trennzeichens, das verwendet wird, um die zurückzugebende Teilzeichenfolge zu bestimmen.

Wenn count positiv ist, wird alles links vom letzten Trennzeichen (von links gezählt) zurückgegeben. Wenn count negativ ist, wird alles rechts vom letzten Trennzeichen (von rechts gezählt) zurückgegeben.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3); 

Ergebnis:

+---------------------------------------------- ---------+| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |+------------------------------------ --------------------------+| /users/homer |+----------------------------------------------------- -----------+

Negativzahl

Die Angabe eines negativen Werts für die Anzahl bewirkt, dass sie vom Ende der Zeichenfolge rückwärts gezählt wird:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3); 

Ergebnis:

+---------------------------------------------- ----------+| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |+----------------------- ----------------------------+| homer/docs/cat_vids |+--------------------------------------------------- -------------+

Trennzeichen nicht gefunden

Wenn das Trennzeichen in der Zeichenfolge nicht vorhanden ist, wird die gesamte Zeichenfolge zurückgegeben:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3); 

Ergebnis:

+---------------------------------------------- ---------+| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) |+------------------------------------ --------------------------+| /users/homer/docs/cat_vids |+---------------------------------------- ---------------+

Null-Argumente

Wenn eines (oder alle) Argumente null sind , der SUBSTRING_INDEX() Funktion gibt null zurück :

SELECT 
    SUBSTRING_INDEX(null, '/', 3) AS "1",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
    SUBSTRING_INDEX(null, null, null) AS "4"; 

Ergebnis:

+------+------+------+------+| 1 | 2 | 3 | 4 |+------+------+------+------+| NULL | NULL | NULL | NULL |+------+------+------+------+

Fehlende Argumente

Aufruf von SUBSTRING_INDEX() ohne Argumente zu übergeben führt zu einem Fehler:

SELECT SUBSTRING_INDEX(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'SUBSTRING_INDEX'