Функция SUBSTRING_INDEX
Функция SUBSTRING_INDEX возвращает
подстроку из строки перед появлениям N вхождений
разделителя. Если N положителен, то возвращается
все, что находится слева от последнего разделителя
(считая слева). Если N отрицателен, то возвращается
все, что находится справа от последнего разделителя
(считая справа).
Синтаксис
SELECT SUBSTRING_INDEX(field, delimiter, count)
FROM table_name WHERE condition
Таблица для примеров
| id | text |
|---|---|
| 1 | word1-word2-word3-word4-word5 |
| 2 | alpha-beta-gamma-delta-epsilon |
Пример
Давайте вернём подстроку, расположенную перед
первым вхождением разделителя '-':
SELECT id, SUBSTRING_INDEX(text, '-', 1) AS text FROM texts
Результат выполнения кода:
| id | text |
|---|---|
| 1 | word1 |
| 2 | alpha |
Пример
Давайте вернём подстроку, расположенную перед
вторым вхождением разделителя '-':
SELECT id, SUBSTRING_INDEX(text, '-', 2) AS text FROM texts
Результат выполнения кода:
| id | text |
|---|---|
| 1 | word1-word2 |
| 2 | alpha-beta |
Пример
Давайте вернём подстроку, расположенную перед
третьим вхождением разделителя '-':
SELECT id, SUBSTRING_INDEX(text, '-', 3) AS text FROM texts
Результат выполнения кода:
| id | text |
|---|---|
| 1 | word1-word2-word3 |
| 2 | alpha-beta-gamma |
Пример
Давайте вернём подстроку, расположенную после
первого с конца вхождения разделителя '-':
SELECT id, SUBSTRING_INDEX(text, '-', -1) AS text FROM texts
Результат выполнения кода:
| id | text |
|---|---|
| 1 | word5 |
| 2 | epsilon |
Пример
Давайте вернём подстроку, расположенную
после второго с конца вхождения разделителя '-':
SELECT id, SUBSTRING_INDEX(text, '-', -2) AS text FROM texts
Результат выполнения кода:
| id | text |
|---|---|
| 1 | word4-word5 |
| 2 | delta-epsilon |
Пример
Давайте вернём подстроку, расположенную после
третьего с конца вхождения разделителя '-':
SELECT id, SUBSTRING_INDEX(text, '-', -3) AS text FROM texts
Результат выполнения кода:
| id | text |
|---|---|
| 1 | word3-word4-word5 |
| 2 | gamma-delta-epsilon |