Справочник по функциям

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;
firstsecondafter_secondnot_found
2460

Где начинается фамилия

PostgreSQL 17.5
SELECT member_name,
	REGEXP_INSTR(member_name, '[A-Z]', 1, 2) AS last_name_start
FROM FamilyMembers;
member_namelast_name_start
Headley Quincey9
Flavia Quincey8
Andie Quincey7
Lela Quincey6
Annie Quincey7
Ernest Forrest8
Constance Forrest11
Wednesday Addams11

Подробности

Функция появилась в PostgreSQL 15. Позиции считаются с 1. Для поиска обычной подстроки без шаблона проще использовать STRPOS или POSITION.

Смотрите также