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