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

REGEXP_INSTR

Возвращает позицию совпадения с регулярным выражением в строке.

PostgreSQL 17.9
REGEXP_INSTR(string, pattern[, start[, occurrence[, endoption[, flags[, subexpr]]]]])
  • [ ]необязательная часть
string
Строка, в которой выполняется поиск
text
pattern
Регулярное выражение
text
start
Позиция начала поиска, по умолчанию 1
integerНеобязательный
occurrence
Номер совпадения, по умолчанию 1
integerНеобязательный
endoption
0 — позиция начала совпадения (по умолчанию), 1 — позиция сразу после его конца
integerНеобязательный
01
flags
Флаги, например i — без учёта регистра
textНеобязательный
bceimnpqstwx
subexpr
Номер группы в скобках, позицию которой нужно вернуть; по умолчанию 0 — всё совпадение
integerНеобязательный

Возвращаемое значение

Целое число — позиция, начиная с 1; 0, если совпадения нет

Примеры

Позиции совпадений

PostgreSQL 17.9
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.9
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.

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