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'