Функция 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,
    которая вырезает символы с любого места строки