V MariaDB, SUBSTRING_INDEX() je vestavěná funkce řetězce. Vrací podřetězec z řetězce před určitým počtem výskytů zadaného oddělovače.
SUBSTRING_INDEX() vyžaduje tři argumenty; řetězec, oddělovač a počet (tj. počet výskytů tohoto oddělovače).
Syntaxe
Syntaxe vypadá takto:
SUBSTRING_INDEX(str,delim,count)
Kde str je řetězec delim je oddělovač a count je počet výskytů tohoto oddělovače, který se má použít pro určení podřetězce, který se má vrátit.
Pokud count je kladné, vrátí se vše nalevo od konečného oddělovače (počítáno zleva). Pokud count je záporné, vrátí se vše napravo od posledního oddělovače (počítáno zprava).
Příklad
Zde je základní příklad:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3); Výsledek:
+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |
+-------------------------------------------------------+
| /users/homer |
+-------------------------------------------------------+ Záporný počet
Zadání záporné hodnoty počtu způsobí, že se bude počítat zpětně od konce řetězce:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3); Výsledek:
+--------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |
+--------------------------------------------------------+
| homer/docs/cat_vids |
+--------------------------------------------------------+ Oddělovač nenalezen
Pokud oddělovač v řetězci neexistuje, vrátí se celý řetězec:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3); Výsledek:
+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) |
+-------------------------------------------------------+
| /users/homer/docs/cat_vids |
+-------------------------------------------------------+ Nulové argumenty
Pokud jsou některé (nebo všechny) argumenty null , SUBSTRING_INDEX() funkce vrací 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"; Výsledek:
+------+------+------+------+ | 1 | 2 | 3 | 4 | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
Chybí argumenty
Volání SUBSTRING_INDEX() bez předání jakýchkoli argumentů dojde k chybě:
SELECT SUBSTRING_INDEX(); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'