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