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
J'aimerais changer le mot «mises à jour» en «nouvelles». Est-il possible de le faire avec un script?
Réponses:
Maintenant, les lignes qui étaient comme
http://www.example.com/articles/updates/43
sera
http://www.example.com/articles/news/43
http://www.electrictoolbox.com/mysql-find-replace-text/
la source
WHERE LIKE
clause à la fin, car si le texte à rechercher n'est pas là, la ligne ne sera pas mise à jour, mais cela devrait accélérer les choses . "LIKE '%%'
n'utilise aucun index, s'il y avait d'autres parties dans ce WHERE, par exemple quelque chose commedate_added > '2014-07-01'
ça aurait pu aiderOui, MySQL a une fonction REPLACE ():
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Notez qu'il est plus facile de créer un alias lors de l'utilisation
SELECT
la source
updates
qu'une seule fois dans la chaîne, cela fonctionnera. Sinon, vous êtes coincé avec la manipulation directe de chaînes, ce qui est vraiment pénible dans MySQL. À ce stade, il serait plus facile d'écrire un script unique pour sélectionner les champs, la manipulation dans le client, puis réécrire.La fonction de remplacement devrait fonctionner pour vous.
Renvoie la chaîne str avec toutes les occurrences de la chaîne from_str remplacées par la chaîne to_str.
REPLACE()
effectue une correspondance sensible à la casse lors de la recherche de from_str.la source
Vous pouvez simplement utiliser la fonction replace (),
Remarque: La requête ci-dessus si pour les enregistrements de mise à jour directement dans la table, si vous souhaitez sélectionner la requête et que les données ne doivent pas être affectées dans la table, vous pouvez utiliser la requête suivante:
la source
En plus de la réponse de gmaggio si vous avez besoin de dynamiquement
REPLACE
etUPDATE
selon une autre colonne, vous pouvez faire par exemple:Dans mon exemple, la chaîne
articles/news/
est stockée dansother_table t2
et il n'est pas nécessaire d'utiliserLIKE
dans laWHERE
clause.la source