SUBSTRING_INDEX
Аналог в PostgreSQL:
Возвращает часть строки до заданного вхождения разделителя.
MySQL 8.1
SUBSTRING_INDEX(str, delimiter, count)Параметры
- strVARCHAR
- Исходная строка
- delimiterVARCHAR
- Разделитель, регистр учитывается
- countINT
- Номер вхождения разделителя, отрицательный отсчитывается с конца строки
Возвращаемое значение
Часть строки левее count-го разделителя, а при отрицательном count — правее count-го разделителя с конца; вся строка, если разделителей меньше; пустая строка при count = 0
Примеры
Часть до второй точки
MySQL 8.1
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);Часть после второй точки с конца
MySQL 8.1
SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);Домен из email
MySQL 8.1
SELECT email,
SUBSTRING_INDEX(email, '@', -1) AS domain
FROM Users
LIMIT 5;Подробности
Чтобы взять одну часть строки по номеру, как SPLIT_PART в PostgreSQL, вложите два вызова: сначала отрежьте всё после n-го разделителя, затем возьмите последнюю часть. SUBSTRING_INDEX(SUBSTRING_INDEX('www.mysql.com', '.', 2), '.', -1) вернёт mysql.