Функция SUBSTRING_INDEX
возвращает
подстроку из строки перед появлениям N вхождений
разделителя. Если N положителен, то возвращается
все, что находится слева от последнего разделителя
(считая слева). Если N отрицателен, то возвращается
все, что находится справа от последнего разделителя
(считая справа).
Синтаксис
SELECT SUBSTRING_INDEX(поле, разделитель, количество_разделителей)
FROM имя_таблицы WHERE условие
Таблицы для примеров
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 |