Reemplazar cadenas en MySQL

SQLSeguro que alguna vez habéis tenido una cadena concreta repetida en más de una fila de MySQL, y habéis querido reemplazarlo por otro de forma masiva. Esto es muy usual cuando cambiamos de dominio una página de WordPress y tenemos que actualizar toda la base de datos poniendo la dirección del dominio nuevo.

Esta operación era un auténtico rollazo… hasta ahora. En realidad es muy simple de cambiar. Todo lo que tenemos que hacer es ejecutar la siguiente sentencia SQL:

UPDATE <tabla> SET <campo> = REPLACE ( <columna>, '<cadena antigua>', '<cadena nueva>' )

Donde <tabla> es la tabla en la que queremos realizar los cambios, y <columna> es la columna donde vamos a buscar la <cadena antigua> para sustituir todas las coincidencias con <cadena nueva>. No es necesario establecer los %…% que usamos en MySQL para denotar que hay texto delante y detrás. Vamos a ver un ejemplo, la tabla “coches”.

Modelo Color Puertas
Renault Clio Rojo 6 puertas
Ford Fiesta Azul 5 puertas
Citroen DS4 Blanco 6 puertas

En esta ocasión vamos a sustituir en la tabla “coches”, columna “puertas”, donde encuentre un 6 debe escribir un 3.

UPDATE coches SET puertas = REPLACE ( puertas, '6', '3' );

Y el resultado viene a ser este:

Modelo Color Puertas
Renault Clio Rojo 3 puertas
Ford Fiesta Azul 5 puertas
Citroen DS4 Blanco 3 puertas

Por supuesto, también podríamos haber limitado la consulta a ciertos criterios, con una clausula WHERE:

UPDATE coches SET puertas = REPLACE ( puertas, '6', '3' ) WHERE color = "Blanco";

Cuyo resultado sería este otro:

Modelo Color Puertas
Renault Clio Rojo 6 puertas
Ford Fiesta Azul 5 puertas
Citroen DS4 Blanco 3 puertas

Para los que estéis de mudanza de dominios con WordPress, os recomiendo que miréis en las tablas wp_options (option_value), wp_posts (post_content y guid) y wp_postmeta (meta_value), que suelen tener la URL de la web.

¡Espero que os haya sido util este pequeño truco!

“SQL, Lisp y Haskell son los únicos lenguajes de programación que he visto
en los que uno pasa más tiempo pensando que escribiendo”

    .- Philip Greenspun

¿Te ha gustado el artículo?
1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, promedio: 5,00 sobre 5)
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

2 Comentarios

Martin

Muchas gracias Rubén me ha servido mucho para cambiar 1200 campos de una base de datos con la opción de Where ya que no quería cambiarlo en toda la columna. Comparto tu artículo en redes

José Andrés

Muchas gracias, me sirvió de ayuda en la "mudanza".