W MariaDB, SUBSTRING_INDEX()
jest wbudowaną funkcją ciągu. Zwraca podciąg z ciągu przed określoną liczbą wystąpień określonego ogranicznika.
SUBSTRING_INDEX()
wymaga trzech argumentów; ciąg, ogranicznik i liczba (tj. liczba wystąpień tego ogranicznika).
Składnia
Składnia wygląda tak:
SUBSTRING_INDEX(str,delim,count)
Gdzie str
jest ciągiem, delim
jest ogranicznikiem, a count
to liczba wystąpień tego ogranicznika, który zostanie użyty do określenia podciągu do zwrócenia.
Jeśli count
jest dodatnia, zwracane jest wszystko na lewo od końcowego ogranicznika (licząc od lewej). Jeśli count
jest ujemne, zwracane jest wszystko na prawo od ostatniego ogranicznika (licząc od prawej).
Przykład
Oto podstawowy przykład:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);
Wynik:
+-------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) | +-------------------------------------------------------+ | /users/homer | +-------------------------------------------------------+
Liczba ujemna
Określenie ujemnej wartości licznika powoduje, że jest on liczony wstecz od końca ciągu:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);
Wynik:
+--------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) | +--------------------------------------------------------+ | homer/docs/cat_vids | +--------------------------------------------------------+
Nie znaleziono separatora
Jeśli ogranicznik nie istnieje w ciągu, zwracany jest cały ciąg:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);
Wynik:
+-------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) | +-------------------------------------------------------+ | /users/homer/docs/cat_vids | +-------------------------------------------------------+
Argumenty zerowe
Jeśli którykolwiek (lub wszystkie) argumenty są null
, SUBSTRING_INDEX()
funkcja zwraca 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";
Wynik:
+------+------+------+------+ | 1 | 2 | 3 | 4 | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
Brakujące argumenty
Wywołanie SUBSTRING_INDEX()
bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT SUBSTRING_INDEX();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'