REGEXP_MATCHES
Devuelve las coincidencias con una expresión regular: con el indicador g, todas, una fila de resultado por coincidencia.
PostgreSQL 17.9
REGEXP_MATCHES(string, pattern[, flags])- [ ]parte opcional
- string
- Cadena en la que se buscatext
- pattern
- Expresión regulartext
- flags
- Indicadores, por ejemplo 'gi'textOpcionalbcegimnpqstwx
Valor devuelto
Conjunto de arrays text[]; conjunto vacío si no hay coincidencias
Ejemplos
Todos los números de una cadena
PostgreSQL 17.9
SELECT REGEXP_MATCHES('a1b22c333', '[0-9]+', 'g') AS numbers;Partes de cada fecha
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;Mayúsculas de los nombres
PostgreSQL 17.9
SELECT member_name,
(REGEXP_MATCHES(member_name, '[A-Z]', 'g')) [1] AS capital
FROM FamilyMembers;Detalles
Cada coincidencia es un array text[]: un elemento por grupo entre paréntesis o un único elemento con toda la coincidencia. Sin el indicador g solo se devuelve la primera coincidencia.
La función devuelve un conjunto de filas, así que en SELECT multiplica una fila de la tabla y, si no hay coincidencias, la fila desaparece del resultado. Para conservar la fila, usa REGEXP_MATCH: devuelve una coincidencia o NULL.