Chaîne MySQL remplacer

J’ai une colonne contenant des URL (id, url):

http://www.example.com/articles/updates/43 http://www.example.com/articles/updates/866 http://www.example.com/articles/updates/323 http://www.example.com/articles/updates/seo-url http://www.example.com/articles/updates/4?something=test 

Je voudrais changer le mot “mises à jour” à “nouvelles”. Est-il possible de faire cela avec un script?

 UPDATE your_table SET your_field = REPLACE(your_field, 'articles/updates/', 'articles/news/') WHERE your_field LIKE '%articles/updates/%' 

Maintenant, des lignes qui ressemblaient à

http://www.example.com/articles/updates/43

sera

http://www.example.com/articles/news/43

http://www.elecsortingctoolbox.com/mysql-find-replace-text/

Oui, MySQL a une fonction REPLACE ():

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

http://dev.mysql.com/doc/refman/5.0/en/ssortingng-functions.html#function_replace

Notez que c’est plus facile si vous faites un alias avec SELECT

 SELECT REPLACE(ssortingng_column, 'search', 'replace') as url.... 

La fonction de remplacement devrait fonctionner pour vous.

 REPLACE(str,from_str,to_str) 

Renvoie la chaîne str avec toutes les occurrences de la chaîne from_str remplacée par la chaîne to_str. REPLACE() effectue une correspondance sensible à la casse lorsque vous recherchez from_str.

En plus de la réponse de gmaggio si vous avez besoin de REPLACE et UPDATE dynamicment selon une autre colonne, vous pouvez par exemple:

 UPDATE your_table t1 INNER JOIN other_table t2 ON t1.field_id = t2.field_id SET t1.your_field = IF(LOCATE('articles/updates/', t1.your_field) > 0, REPLACE(t1.your_field, 'articles/updates/', t2.new_folder), t1.your_field) WHERE... 

Dans mon exemple, la chaîne articles/news/ est stockée dans other_table t2 et il n’est pas nécessaire d’utiliser LIKE dans la clause WHERE .

Vous pouvez simplement utiliser la fonction replace (),

avec où clause-

 update tabelName set columnName=REPLACE(columnName,'from','to') where condition; 

sans où clause-

 update tabelName set columnName=REPLACE(columnName,'from','to'); 

Remarque: La requête ci-dessus, si les enregistrements de mise à jour sont directement dans la table, si vous souhaitez que la requête select et les données ne soient pas affectées dans la table, vous pouvez utiliser la requête suivante:

 select REPLACE(columnName,'from','to') as updateRecord;