45 votes

str_replace dans SQL UPDATE ?

Voici un exemple de tableau :

 name       |   picture

John S.    |   http://servera.host.com/johns.png
Linda B.   |   http://servera.host.com/lindab.png
...

Disons qu'il y a plusieurs centaines d'enregistrements supplémentaires.

Disons également que nous avons déplacé les serveurs de "servera" à "serverb".

Serait-il possible d'entrer dans cette table avec une requête pour renommer le contenu de la colonne « image » pour chaque enregistrement afin de lire le nom de serveur correct ?

106voto

Anatoly G Points 2864

T-SQL :

 update TBL 
   set picture = Replace(picture, 'servera', 'serverb') 
 where picture like '%servera%'

Oracle:

 update TBL 
   set picture = replace(picture, 'servera', 'serverb') 
 where picture like '%servera%'

MySQL :

 update TBL 
   set picture = REPLACE(picture, 'servera', 'serverb') 
 where picture like '%servera%'

20voto

Andrew Points 2407
UPDATE users
SET picture = REPLACE(picture, 'http://servera.host.com/', 'http://serverb.host.com/')
WHERE picture LIKE 'http://servera.host.com/%';

J'inclus plus de chaîne parce que je m'inquiéterais de « réparer » une image nommée « quelquechoseserveuraquelquechose.jpg ». Je pourrais aussi penser à avoir une table base_url et simplement à stocker les noms de fichiers image dans les utilisateurs, mais ce n'est pas la question que vous avez posée ;-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X