Actualizar un valor de columna, reemplazando parte de una cadena


326

Tengo una tabla con las siguientes columnas en una base de datos MySQL

[id, url]

Y las URL son como:

 http://domain1.com/images/img1.jpg

Quiero actualizar todas las URL a otro dominio.

 http://domain2.com/otherfolder/img1.jpg

manteniendo el nombre del archivo como está.

¿Cuál es la consulta que debo ejecutar?


Respuestas:



162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

documentos relevantes: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
Hola, ¿por qué necesito el dónde?
Guy Cohen

14
@GuyCohen Porque, de lo contrario, la consulta modificará cada fila de la tabla. La WHEREcláusula optimiza la consulta para modificar solo las filas con cierta URL. Lógicamente, el resultado será el mismo, pero la adición de WHEREhará que la operación sea más rápida.
Dmytro Shevchenko

3
Las WHEREasegura también que sólo se está reemplazando partes de cadenas que comienzan con http://etc/etc/o string_to_be_replaced.Por ejemplo, en la respuesta dada, http://domain1.com/images/this/is/a/testse verían afectados, pero foobar/http://domain1.com/images/no lo haría.
Kyle Challis


9

Necesita la cláusula WHERE para reemplazar SOLO los registros que cumplan con la condición de la cláusula WHERE (en oposición a todos los registros). Utiliza el signo % para indicar una cadena parcial: IE

LIKE ('...//domain1.com/images/%');

medios todos los registros que instrucciones BEGIN con "...//domain1.com/images/"y tener después de nada (que es la %de ...)

Otro ejemplo:

LIKE ('%http://domain1.com/images/%')

lo que significa todos los registros que contiene "http://domain1.com/images/"

en cualquier parte de la cadena ...


7

Prueba esto...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');

1

Primero, hay que verificar

SELECCIONE * DESDE universityDONDE course_name LIKE '% & amp%'

A continuación, tengo que actualizar

ACTUALIZAR universidad SET course_name = REPLACE (course_name, '& amp', '&') WHERE id = 1

Resultados: Ingeniería y Tecnología de amplificadores => Ingeniería y Tecnología

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.