Перейти к основному содержимому

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.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

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