REGEXP_MATCH
Equivalente en MySQL:
Devuelve un array de subcadenas de la primera coincidencia con una expresión regular.
PostgreSQL 17.9
REGEXP_MATCH(string, pattern[, flags])- [ ]parte opcional
- string
- Cadena en la que se buscatext
- pattern
- Expresión regulartext
- flags
- Indicadores, por ejemplo i para no distinguir mayúsculas y minúsculastextOpcionalbceimnpqstwx
Valor devuelto
Array de texto (text[]) de la primera coincidencia; NULL si no hay coincidencia
Ejemplos
Partes de una fecha a partir de un texto
PostgreSQL 17.9
SELECT REGEXP_MATCH(
'Order from 2024-03-08',
'([0-9]{4})-([0-9]{2})-([0-9]{2})'
);Usuario y dominio de un email
PostgreSQL 17.9
SELECT email,
REGEXP_MATCH(email, '^(.+)@(.+)$') AS parts
FROM Users
LIMIT 5;El dominio como elemento del array
PostgreSQL 17.9
SELECT email,
(REGEXP_MATCH(email, '@(.+)$')) [1] AS domain
FROM Users
LIMIT 5;Detalles
Si la expresión tiene grupos entre paréntesis, el array contiene un elemento por grupo; si no, un único elemento con toda la coincidencia. Un elemento suelto se obtiene por su número: (REGEXP_MATCH(...))[1]. El indicador g no está soportado: todas las coincidencias las devuelve REGEXP_MATCHES(..., 'g'), una fila de resultado por coincidencia. Para obtener la coincidencia como cadena y no como array, usa REGEXP_SUBSTR, que existe en PostgreSQL desde la versión 15.