REGEXP_INSTR
Возвращает позицию совпадения с регулярным выражением в строке.
PostgreSQL 17.5
REGEXP_INSTR(string, pattern[, start[, occurrence[, endoption[, flags[, subexpr]]]]])Параметры
- stringtext
- Строка, в которой выполняется поиск
- patterntext
- Регулярное выражение
- startintegerнеобязательный
- Позиция начала поиска, по умолчанию 1
- occurrenceintegerнеобязательный
- Номер совпадения, по умолчанию 1
- endoptionintegerнеобязательный
- 0 — позиция начала совпадения (по умолчанию), 1 — позиция сразу после его конца
- flagstextнеобязательный
- Флаги, например i — без учёта регистра
- subexprintegerнеобязательный
- Номер группы в скобках, позицию которой нужно вернуть; по умолчанию 0 — всё совпадение
Возвращаемое значение
Целое число — позиция, начиная с 1; 0, если совпадения нет
Примеры
Позиции совпадений
PostgreSQL 17.5
SELECT REGEXP_INSTR('a1b22c333', '[0-9]+') AS FIRST,
REGEXP_INSTR('a1b22c333', '[0-9]+', 1, 2) AS SECOND,
REGEXP_INSTR('a1b22c333', '[0-9]+', 1, 2, 1) AS after_second,
REGEXP_INSTR('abc', '[0-9]') AS not_found;Где начинается фамилия
PostgreSQL 17.5
SELECT member_name,
REGEXP_INSTR(member_name, '[A-Z]', 1, 2) AS last_name_start
FROM FamilyMembers;Подробности
Функция появилась в PostgreSQL 15. Позиции считаются с 1. Для поиска обычной подстроки без шаблона проще использовать STRPOS или POSITION.