sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer SUBSTRING_INDEX() i MariaDB

I MariaDB, SUBSTRING_INDEX() er en indbygget strengfunktion. Det returnerer en understreng fra en streng før et vist antal forekomster af det angivne skilletegn.

SUBSTRING_INDEX() kræver tre argumenter; strengen, afgrænseren og antallet (dvs. antallet af forekomster af den afgrænser).

Syntaks

Syntaksen ser sådan ud:

SUBSTRING_INDEX(str,delim,count)

Hvor str er strengen, delim er afgrænsningstegnet og count er antallet af forekomster af den afgrænser, der skal bruges til at bestemme den understreng, der skal returneres.

Hvis count er positiv, returneres alt til venstre for den sidste afgrænsning (tæller fra venstre). Hvis count er negativ, returneres alt til højre for den endelige afgrænsning (tæller fra højre).

Eksempel

Her er et grundlæggende eksempel:

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

Resultat:

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

Negativt antal

Angivelse af en negativ værdi for optællingen medfører, at den tælles baglæns fra slutningen af ​​strengen:

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

Resultat:

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

Afgrænser ikke fundet

Hvis afgrænsningstegnet ikke findes i strengen, returneres hele strengen:

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

Resultat:

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

Nul-argumenter

Hvis nogen (eller alle) af argumenterne er null , SUBSTRING_INDEX() funktion returnerer null :

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";

Resultat:

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

Manglende argumenter

Kalder SUBSTRING_INDEX() uden at sende nogen argumenter resulterer det i en fejl:

SELECT SUBSTRING_INDEX();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'

  1. Beregning af InnoDB-bufferpoolstørrelse til din MySQL-server

  2. Sådan tilføjer du AM/PM til en tids- eller datotidsværdi i MariaDB

  3. Sådan forespørges jsonb-arrays med IN-operator

  4. Hvordan begrænser jeg antallet af rækker, der returneres af en Oracle-forespørgsel efter bestilling?