REGEXP_MATCHES
Возвращает совпадения с регулярным выражением: с флагом g — все, по строке результата на каждое.
PostgreSQL 17.5
REGEXP_MATCHES(string, pattern[, flags])Параметры
- stringtext
- Строка, в которой выполняется поиск
- patterntext
- Регулярное выражение
- flagstextнеобязательный
- Флаги: g — все совпадения, i — без учёта регистра
Возвращаемое значение
Набор массивов text[]; пустой набор, если совпадений нет
Примеры
Все числа строки
PostgreSQL 17.5
SELECT REGEXP_MATCHES('a1b22c333', '[0-9]+', 'g') AS numbers;Части каждой даты
PostgreSQL 17.5
SELECT REGEXP_MATCHES(
'2024-03-08, 2025-12-31',
'([0-9]{4})-([0-9]{2})-([0-9]{2})',
'g'
) AS date_parts;Заглавные буквы в именах
PostgreSQL 17.5
SELECT member_name,
(REGEXP_MATCHES(member_name, '[A-Z]', 'g')) [1] AS capital
FROM FamilyMembers;Подробности
Каждое совпадение — массив text[]: по элементу на каждую группу в скобках или один элемент со всем совпадением. Без флага g возвращается только первое совпадение.
Функция возвращает набор строк, поэтому в SELECT размножает строку таблицы, а если совпадений нет, строка пропадает из результата. Чтобы строка оставалась, используйте REGEXP_MATCH: она возвращает одно совпадение или NULL.