Question Chaîne MySQL remplacer


J'ai une colonne contenant des URLs (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 "updates" en "news". Est-il possible de faire cela avec un script?


456
2018-05-10 21:58


origine


Réponses:


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

Maintenant, les lignes qui ressemblaient

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

sera

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

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


1073
2018-01-29 15:31



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/string-functions.html#function_replace

Notez que c'est plus facile si vous faites un alias en utilisant SELECT 

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

130
2018-05-10 22:01



le remplacer La fonction 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 lors de la recherche de from_str.


15
2018-05-10 22:01



En plus de la réponse de gmaggio si vous avez besoin de dynamiquement REPLACE et UPDATE selon une autre colonne, vous pouvez faire 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é dans other_table t2 et il n'y a pas besoin d'utiliser LIKE dans le WHERE clause.


6
2017-10-13 16:09



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 pour les enregistrements de mise à jour directement dans la table, si vous voulez sur une requête de sélection et les données ne doivent pas être affectées dans la table, vous pouvez utiliser la requête suivante

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

5
2018-01-30 11:41