# Функция SUBSTRING_INDEX

Функция `SUBSTRING_INDEX` возвращает подстроку из строки перед появлениям N вхождений разделителя. Если N положителен, то возвращается все, что находится слева от последнего разделителя (считая слева). Если N отрицателен, то возвращается все, что находится справа от последнего разделителя (считая справа).

## Синтаксис

`SELECT SUBSTRING_INDEX(поле, разделитель, количество_разделителей) FROM имя_таблицы WHERE условие`

## Таблицы для примеров

таблица texts
id айди | text текст
--- | ---
1 | слово1-слово2-слово3-слово4-слово5
2 | word1-word2-word3-word4-word5

## Пример

В данном примере вернется подстрока перед первым вхождением разделителя `'-'`:

`SELECT *, SUBSTRING_INDEX(text, '-', 1) as text FROM texts`

Результат выполнения кода:

id айди | text текст
--- | ---
1 | слово1
2 | word1

## Пример

В данном примере вернется подстрока перед вторым вхождением разделителя `'-'`:

`SELECT *, SUBSTRING_INDEX(text, '-', 2) as text FROM texts`

Результат выполнения кода:

id айди | text текст
--- | ---
1 | слово1-слово2
2 | word1-word2

## Пример

В данном примере вернется подстрока перед третьим вхождением разделителя `'-'`:

`SELECT *, SUBSTRING_INDEX(text, '-', 3) as text FROM texts`

Результат выполнения кода:

id айди | text текст
--- | ---
1 | слово1-слово2-слово3
2 | word1-word2-word3

## Пример

В данном примере вернется подстрока перед первым с конца вхождением разделителя `'-'`:

`SELECT *, SUBSTRING_INDEX(text, '-', -1) as text FROM texts`

Результат выполнения кода:

id айди | text текст
--- | ---
1 | слово5
2 | word5

## Пример

В данном примере вернется подстрока перед вторым с конца вхождением разделителя `'-'`:

`SELECT *, SUBSTRING_INDEX(text, '-', -2) as text FROM texts`

Результат выполнения кода:

id айди | text текст
--- | ---
1 | слово4-слово5
2 | word4-word5

## Пример

В данном примере вернется подстрока перед третьим с конца вхождением разделителя `'-'`:

`SELECT *, SUBSTRING_INDEX(text, '-', -3) as text FROM texts`

Результат выполнения кода:

id айди | text текст
--- | ---
1 | слово3-слово4-слово5
2 | word3-word4-word5

## Смотрите также

- функцию `LEFT`,
  которая вырезает символы с начала строки
- функцию `RIGHT`,
  которая вырезает символы с конца строки
- `SUBSTRING`,
  которая вырезает символы с любого места строки

↑