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'