Referencia de funciones

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 origen
VARCHAR
pattern
Expresión regular
VARCHAR
replacement
Cadena que se pone en lugar de la coincidencia
VARCHAR
pos
Posición desde la que se busca, de 1 a la longitud de la cadena + 1; por defecto, 1
INTOpcional
occurrence
Número de la coincidencia que se sustituye; por defecto, 0 (todas)
INTOpcional
match_type
Indicadores de coincidencia; se pueden combinar
VARCHAROpcional
cimnu

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]', '*');
REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*')
sql-academy-****

Sustituir solo el segundo número

MySQL 8.4
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2);
REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2)
a1b*c333

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'
	);
REGEXP_REPLACE('2024-03-08', '([0-9]{4})-([0-9]{2})-([0-9]{2})', '$3.$2.$1')
08.03.2024

Solo las cifras del teléfono

MySQL 8.4
SELECT name,
	REGEXP_REPLACE(phone_number, '[^0-9]', '') AS digits
FROM Users
LIMIT 5;
namedigits
Bruce Willis12025550128
George Clooney12025550145
Kevin Costner12025550197
Donald Sutherland12025550161
Jennifer Lopez12025550145

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.

Véase también