REGEXP_SUBSTR
Возвращает подстроку, которая соответствует регулярному выражению.
MySQL 8.1
REGEXP_SUBSTR(expr, pattern[, pos[, occurrence[, match_type]]])Параметры
- exprVARCHAR
- Строка, в которой выполняется поиск
- patternVARCHAR
- Регулярное выражение
- posINTнеобязательный
- Позиция, с которой начинается поиск, от 1 до длины строки + 1, по умолчанию 1
- occurrenceINTнеобязательный
- Номер совпадения, по умолчанию 1 — первое
- match_typeVARCHARнеобязательный
- Флаги сопоставления, как у REGEXP_LIKE, например c — с учётом регистра
Возвращаемое значение
Подстрока с совпадением; NULL, если совпадения нет или expr либо pattern равен NULL
Примеры
Дата из текста
MySQL 8.1
SELECT REGEXP_SUBSTR(
'Order from 2024-03-08',
'[0-9]{4}-[0-9]{2}-[0-9]{2}'
);Третье число в строке
MySQL 8.1
SELECT REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3);Улица из адреса
MySQL 8.1
SELECT address,
REGEXP_SUBSTR(address, '[^, ][^,]*', 1, 2) AS street
FROM Rooms
LIMIT 5;Подробности
Группы в скобках не возвращаются по отдельности, результат — всё совпадение целиком. Чтобы получить только часть совпадения, сузьте выражение или используйте REGEXP_REPLACE с $1. pos должен быть от 1 до длины строки + 1: при 0 и при большем значении функция выдаёт ошибку.