Функция SUBSTRING_INDEX возвращает подстроку из строки перед появлениям N вхождений разделителя.
Если N положителен, то возвращается все, что находится слева от последнего разделителя (считая слева). Если N отрицателен, то возвращается все, что находится справа от последнего разделителя (считая справа).
См. также функцию LEFT, которая вырезает символы с начала строки.
См. также функцию RIGHT, которая вырезает символы с конца строки.
См. также функции SUBSTRING и MID которые вырезают символы с любого места строки.
Синтаксис
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
SQL запрос выберет следующие строки:
id айди |
text текст |
---|---|
1 | слово1 |
2 | word1 |
Пример
В данном примере вернется подстрока перед вторым вхождением разделителя '-':
SELECT *, SUBSTRING_INDEX(text, '-', 2) as text FROM texts
SQL запрос выберет следующие строки:
id айди |
text текст |
---|---|
1 | слово1-слово2 |
2 | word1-word2 |
Пример
В данном примере вернется подстрока перед третьим вхождением разделителя '-':
SELECT *, SUBSTRING_INDEX(text, '-', 3) as text FROM texts
SQL запрос выберет следующие строки:
id айди |
text текст |
---|---|
1 | слово1-слово2-слово3 |
2 | word1-word2-word3 |
Пример
В данном примере вернется подстрока перед первым с конца вхождением разделителя '-':
SELECT *, SUBSTRING_INDEX(text, '-', -1) as text FROM texts
SQL запрос выберет следующие строки:
id айди |
text текст |
---|---|
1 | слово5 |
2 | word5 |
Пример
В данном примере вернется подстрока перед вторым с конца вхождением разделителя '-':
SELECT *, SUBSTRING_INDEX(text, '-', -2) as text FROM texts
SQL запрос выберет следующие строки:
id айди |
text текст |
---|---|
1 | слово4-слово5 |
2 | word4-word5 |
Пример
В данном примере вернется подстрока перед третьим с конца вхождением разделителя '-':
SELECT *, SUBSTRING_INDEX(text, '-', -3) as text FROM texts
SQL запрос выберет следующие строки:
id айди |
text текст |
---|---|
1 | слово3-слово4-слово5 |
2 | word3-word4-word5 |