Actualizar un valor de columna, reemplazando parte de una cadena


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

[id, url]

Y las urls son como:

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

Quiero actualizar todas las URL a otro dominio

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

Mantener el nombre del archivo tal cual.

¿Cuál es la consulta que debo ejecutar?

 248
Author: Dmytro Shevchenko, 2012-04-16

5 answers

UPDATE urls
SET url = REPLACE(url, 'domain1.com/images/', 'domain2.com/otherfolder/')
 517
Author: Dmytro Shevchenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-16 15:39:09
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

 128
Author: Marc B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-16 15:39:15

Intente usar la función REEMPLAZAR :

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'

Tenga en cuenta que distingue entre mayúsculas y minúsculas.

 23
Author: schellack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-16 15:40:04

Necesita la cláusula WHERE para reemplazar SOLO los registros que cumplen con la condición en la cláusula WHERE (a diferencia de todos los registros). Usted usa % signo para indicar cadena parcial: I. E.

LIKE ('...//domain1.com/images/%'); significa todos los registros que COMIENZAN con "{//domain1.com/images / " y tener cualquier cosa DESPUÉS (ese es el % para...)

Otro ejemplo:

COMO ('% http://domain1.com/images/ % ') que significa todos los registros que contiene "http://domain1.com/images/" en cualquier parte de la cuerda...

 9
Author: Kenneth Daly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-24 23:27:19

Prueba esto...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');
 1
Author: ManiMaran A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-11 02:18:19