Reemplazar cadenas en MySQL
Seguro 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
4 Comentarios
Humberto Fretes
Muy bien explicado! Gracias.
Roger
Muy bien explicado. Muchas gracias por la claridad.
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".