REGEXP_REPLACE
Sustituye las coincidencias de una expresión regular por otra cadena.
MySQL 8.4
REGEXP_REPLACE(expr, pattern, replacement[, pos[, occurrence[, match_type]]])- [ ]parte opcional
- expr
- Cadena de origenVARCHAR
- pattern
- Expresión regularVARCHAR
- replacement
- Cadena que se pone en lugar de la coincidenciaVARCHAR
- pos
- Posición desde la que se busca, de 1 a la longitud de la cadena + 1; por defecto, 1INTOpcional
- occurrence
- Número de la coincidencia que se sustituye; por defecto, 0 (todas)INTOpcional
- match_type
- Indicadores de coincidencia; se pueden combinarVARCHAROpcionalcimnu
Valor devuelto
Cadena con las coincidencias sustituidas; la cadena de origen si no hay coincidencias; NULL si expr, pattern o replacement es NULL
Ejemplos
Sustituir todas las cifras
MySQL 8.4
SELECT REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*');Sustituir solo el segundo número
MySQL 8.4
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2);Reordenar las partes de una fecha
MySQL 8.4
SELECT REGEXP_REPLACE(
'2024-03-08',
'([0-9]{4})-([0-9]{2})-([0-9]{2})',
'$3.$2.$1'
);Solo las cifras del teléfono
MySQL 8.4
SELECT name,
REGEXP_REPLACE(phone_number, '[^0-9]', '') AS digits
FROM Users
LIMIT 5;Detalles
En replacement puedes insertar una parte de la coincidencia que esté entre paréntesis: $1 es el primer grupo, $2 el segundo, y así sucesivamente. pos debe estar entre 1 y la longitud de la cadena + 1: con 0 o con un valor mayor, la función da un error.