substring_index
Извлекает подстроку, которая предше ствует или следует за count вхождениями разделителя.
-
Если
countположительный, отсчёт начинается с начала строки, и функция возвращает подстроку, предшествующуюcount-му разделителю. Например,select substring_index('https://www.selena.io', '.', 2);возвращает подстроку перед вторым разделителем., то естьhttps://www.selena. -
Если
countотрицательный, отсчёт начинается с конца строки, и функция возвращает подстроку, следующую заcount-м разделителем. Например,select substring_index('https://www.selena.io', '.', -2);возвращает подстроку после второго разделителя., то естьselena.io.
Если любой входной параметр равен null, возвращается NULL.
Эта функция поддерживается начиная с версии 3.2.
Синтаксис
VARCHAR substring_index(VARCHAR str, VARCHAR delimiter, INT count)
Параметры
str: обязательный, строка для разделения.delimiter: обязательный, разделитель, используемый для разделения строки.count: обязательный, позиция разделителя. Значение не может быть 0. В противном случае возвращается NULL. Если значение больше фактического количества разделителей в строке, возвращается вся строка.
Возвращаемое значение
Возвращает значение VARCHAR.
Примеры
-- Вернуть подстроку, предшествующую второму разделителю ".".
mysql> select substring_index('https://www.selena.io', '.', 2);
+-----------------------------------------------------+
| substring_index('https://www.selena.io', '.', 2) |
+-----------------------------------------------------+
| https://www.selena |
+-----------------------------------------------------+
-- count отрицательный.
mysql> select substring_index('https://www.selena.io', '.', -2);
+------------------------------------------------------+
| substring_index('https://www.selena.io', '.', -2) |
+------------------------------------------------------+
| selena.io |
+------------------------------------------------------+
mysql> select substring_index("hello world", " ", 1);
+----------------------------------------+
| substring_index("hello world", " ", 1) |
+----------------------------------------+
| hello |
+----------------------------------------+
mysql> select substring_index("hello world", " ", -1);
+-----------------------------------------+
| substring_index('hello world', ' ', -1) |
+-----------------------------------------+
| world |
+-----------------------------------------+
-- count равен 0, возвращается NULL.
mysql> select substring_index("hello world", " ", 0);
+----------------------------------------+
| substring_index('hello world', ' ', 0) |
+----------------------------------------+
| NULL |
+----------------------------------------+
-- count больше количества пробелов в строке, возвращается вся строка.
mysql> select substring_index("hello world", " ", 2);
+----------------------------------------+
| substring_index("hello world", " ", 2) |
+----------------------------------------+
| hello world |
+----------------------------------------+
-- count больше количества пробелов в строке, возвращается вся строка.
mysql> select substring_index("hello world", " ", -2);
+-----------------------------------------+
| substring_index("hello world", " ", -2) |
+-----------------------------------------+
| hello world |
+-----------------------------------------+
keyword
substring_index