REGEXP_INSTR
Devuelve la posición de una coincidencia con una expresión regular en una cadena.
PostgreSQL 17.9
REGEXP_INSTR(string, pattern[, start[, occurrence[, endoption[, flags[, subexpr]]]]])- [ ]parte opcional
- string
- Cadena en la que se buscatext
- pattern
- Expresión regulartext
- start
- Posición desde la que se busca, 1 por defectointegerOpcional
- occurrence
- Número de la coincidencia, 1 por defectointegerOpcional
- endoption
- 0 para la posición donde empieza la coincidencia (por defecto), 1 para la posición justo después de su finalintegerOpcional01
- flags
- Indicadores, por ejemplo i para no distinguir mayúsculas y minúsculastextOpcionalbceimnpqstwx
- subexpr
- Número del grupo entre paréntesis cuya posición se devuelve; 0 por defecto, toda la coincidenciaintegerOpcional
Valor devuelto
Número entero: la posición empezando por 1; 0 si no hay coincidencia
Ejemplos
Posiciones de las coincidencias
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;Dónde empieza el apellido
PostgreSQL 17.9
SELECT member_name,
REGEXP_INSTR(member_name, '[A-Z]', 1, 2) AS last_name_start
FROM FamilyMembers;Detalles
La función existe desde PostgreSQL 15. Las posiciones empiezan en 1. Para encontrar una subcadena simple sin patrón, es más sencillo usar STRPOS o POSITION.