Cadenas

REPLACE

Sustituye en una cadena todas las apariciones de un texto por otro.

Sintaxis

REPLACE(<texto>, <buscar>, <reemplazo>)

Busca una subcadena en el texto y sustituye cada aparición, no solo la primera. Para eliminar una subcadena por completo, sustitúyela por una cadena vacía ''. Se usa a menudo para limpiar datos, por ejemplo, para quitar espacios de los teléfonos o cambiar un dominio antiguo en los enlaces.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Sustituir una palabra
SELECT REPLACE('I love MySQL', 'MySQL', 'PostgreSQL') AS result;
result
I love PostgreSQL
Cada aparición, no solo la primera
SELECT REPLACE('a-b-c-d', '-', ', ') AS result;
result
a, b, c, d
Teléfonos sin espacios
SELECT name, phone,
REPLACE(phone, ' ', '') AS compact_phone
FROM employees;
namephonecompact_phone
Emma+44 7700 900123+447700900123
LiamNULLNULL
Olivia+44 7700 900456+447700900456
Noah+44 7700 900789+447700900789
SophiaNULLNULL

Ten en cuenta

Las mayúsculas importan: REPLACE('Hello', 'hello', 'Hi') no sustituye nada. Para no distinguirlas: REGEXP_REPLACE(<texto>, 'hello', 'Hi', 'gi').

Sustituye una subcadena entera, no caracteres sueltos. Para quitar varios caracteres distintos a la vez, usa TRANSLATE: TRANSLATE('+44 (0) 7700', '() ', '') da +4407700.

Si algún argumento es NULL, el resultado también es NULL: REPLACE('abc', 'b', NULL).

Funciones relacionadas