J'ai une table avec les colonnes suivantes dans une base de données MySQL
[id, url]
Et les URL sont comme:
http://domain1.com/images/img1.jpg
Je veux mettre à jour toutes les URL vers un autre domaine
http://domain2.com/otherfolder/img1.jpg
garder le nom du fichier tel quel.
Quelle est la requête dois-je exécuter?
UPDATE urls
SET url = REPLACE(url, 'domain1.com/images/', 'domain2.com/otherfolder/')
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');
documents pertinents: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace
Essayez d’utiliser la fonction REPLACE :
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
Notez qu'il est sensible à la casse.
Vous avez besoin de la clause WHERE pour remplacer ONLY les enregistrements conformes à la condition de la clause WHERE (par opposition à tous les enregistrements). Vous utilisez le signe % pour indiquer une chaîne partielle: I.E.
LIKE ('...//domain1.com/images/%');
signifie que tous les enregistrements BEGIN avec "...//domain1.com/images/"
et ont quelque chose APRÈS (c'est le %
pour ...)
Un autre exemple:
LIKE ('%http://domain1.com/images/%')
ce qui signifie que tous les enregistrements contenant "http://domain1.com/images/"
dans n'importe quelle partie de la chaîne ...
Essaye ça...
update [table_name] set [field_name] =
replace([field_name],'[string_to_find]','[string_to_replace]');