Funciones de texto · sustitución

REPLACE

Busca un fragmento dentro de un texto y devuelve una versión donde todas sus apariciones se sustituyen por otro valor.

Lectura: 7–9 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué hace REPLACE

REPLACE recibe un texto, el fragmento que quieres buscar y el fragmento que debe ocupar su lugar. Devuelve una nueva cadena con todas las coincidencias sustituidas.

La función trabaja dentro de una expresión. En un SELECT no cambia la tabla. Para guardar la transformación sería necesario utilizar UPDATE de forma deliberada y segura.

Sintaxis básica

Estructura
REPLACE(texto, fragmento_buscado, sustituto)

La búsqueda distingue caracteres según las reglas del motor y su configuración. Si el fragmento no aparece, el texto se devuelve sin cambios.

Ejemplo guiado

Queremos crear una versión visual del nombre de producto donde los espacios se conviertan en guiones:

SQL
SELECT nombre,
       REPLACE(nombre, ' ', '-') AS nombre_con_guiones
FROM productos
ORDER BY id
LIMIT 6;
Resultado comprobado
nombrenombre_con_guiones
RatónRatón
TecladoTeclado
Monitor 24Monitor-24
Portátil ProPortátil-Pro
AuricularesAuriculares
Monitor 27Monitor-27

Cómo leer el resultado

  1. Los nombres sin espacios permanecen iguales.
  2. Cada espacio encontrado se sustituye por un guion.
  3. La columna nombre original sigue intacta.

Una sustitución no valida el formato. Esta consulta sirve para presentar o preparar texto. Crear identificadores únicos, correos válidos o URLs seguras requiere reglas adicionales.

Error frecuente

Confundir la función con una sentencia de escritura

En algunos motores existe una sentencia o variante llamada REPLACE relacionada con insertar o sustituir filas. No es lo mismo que la función de texto de tres argumentos.

Función de texto
SELECT REPLACE(nombre, ' ', '-')
FROM productos;

Comprueba siempre si estás usando una expresión dentro de SELECT o una sentencia que puede modificar datos.

Comprueba lo aprendido

Básica · apoyo gradual

Crea correos de demostración

Muestra el nombre y cambia el dominio @example.test por @demo.local. Excluye las filas cuyo correo sea NULL, ordena por id y limita el resultado a cinco filas.

Autónoma · transferencia

Cambia una etiqueta sin modificar el estado original

Muestra los pedidos del 101 al 106 con id, estado y una columna estado_visible. En esa última columna, sustituye pendiente por por preparar. Los demás estados deben quedar iguales y el resultado debe ordenarse por id.

Criterio de éxito: los pedidos 102 y 105 muestran por preparar; enviado y cancelado permanecen sin cambios.

Diferencias entre motores

La función de texto REPLACE(texto, búsqueda, sustituto) está disponible en SQLite, PostgreSQL y MySQL. Las reglas de comparación, el tipo devuelto y el comportamiento de otras sentencias llamadas REPLACE pueden variar. No confundas la función con una operación de escritura específica del motor.

Qué debes recordar

  • Sustituye todas las coincidencias del fragmento buscado.
  • Si no hay coincidencias, devuelve el texto original.
  • En un SELECT, no modifica la tabla.
  • La función de texto no es lo mismo que una sentencia de sustitución de filas.

Conceptos relacionados

Fuentes técnicas consultadas

Se utilizaron para comprobar la firma y diferenciar la función de otras operaciones.