REGEXP_REPLACE
Sustituye las subcadenas que coinciden con una expresión regular por la cadena indicada.
PostgreSQL 17.9
REGEXP_REPLACE(source, pattern, replacement[, start[, occurrence]][, flags])- [ ]parte opcional
- source
- Cadena de origentext
- pattern
- Expresión regulartext
- replacement
- Cadena que se pone en lugar de la coincidenciatext
- start
- Posición desde la que se busca, 1 por defectointegerOpcional
- occurrence
- Número de la coincidencia que se sustituye, 0 para todas; por defecto, la primeraintegerOpcional
- flags
- Indicadores, por ejemplo 'gi' para todas las coincidencias sin distinguir mayúsculas y minúsculastextOpcionalbcegimnpqstwx
Valor devuelto
Cadena con la sustitución; sin el indicador g y sin occurrence solo se sustituye la primera coincidencia
Ejemplos
Sustitución con y sin el indicador g
PostgreSQL 17.9
SELECT REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*') AS first_only,
REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*', 'g') AS all_matches;Sustituir solo el segundo número
PostgreSQL 17.9
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2);Reordenar las partes de una fecha
PostgreSQL 17.9
SELECT REGEXP_REPLACE(
'2024-03-08',
'([0-9]{4})-([0-9]{2})-([0-9]{2})',
'\3.\2.\1'
);Espacios de los nombres a guiones bajos
PostgreSQL 17.9
SELECT good_name,
REGEXP_REPLACE(good_name, ' ', '_', 'g') AS slug
FROM Goods
LIMIT 5;Detalles
En replacement puedes insertar una parte de la coincidencia entre paréntesis: \1 es el primer grupo, \2 el segundo y \& toda la coincidencia. Sin el indicador g solo se sustituye la primera coincidencia. En MySQL se sustituyen todas por defecto, y un grupo se escribe en la sustitución como $1.