Перейти к основному содержимому
Версия: 2.0.x

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