[MySQL 4.1] remplacer en masse une valeur

remplacer en masse une valeur [MySQL 4.1] - SQL/NoSQL - Programmation

Marsh Posté le 21-02-2006 à 21:40:42    

Hello,
 
J'ai un petit souci avec mon forum IPB, voila j'ai upgradé et le lien des émoticons à changé, l'ancien path était /forumv2/ et maintenant le path est /forum/
 
Pour les anciens liens émoticons dans les messages je peux les retrouver dans la base avec cette recherche :
 
SELECT `post`  
FROM `ibf_posts`  
WHERE `post` LIKE CONVERT( _utf8 '%forumv2%'
USING latin1 )  
COLLATE latin1_swedish_ci
LIMIT 0 , 30
 
Mais comment modifier la requete pour que %forumv2% devienne %forum% ? Je suis pas formé à SQL.  :cry:  
 
Merci du coup de main !


Message édité par Calamarpowaaah le 22-02-2006 à 05:29:41
Reply

Marsh Posté le 21-02-2006 à 21:40:42   

Reply

Marsh Posté le 21-02-2006 à 23:40:17    

J ai aucune idée de la BDD utilisée, mais tu devrais essayer quelquechose comme:
UPDATE `ibf_posts`  
SET `post`=strreplace(`post`,CONVERT( _utf8 'forumv2'
USING latin1 ), CONVERT( _utf8 'forum'
USING latin1 ))
WHERE `post` LIKE CONVERT( _utf8 '%forumv2%'
USING latin1 )  
COLLATE latin1_swedish_ci
LIMIT 0 , 1;
 
La plupart de BDD ont une fonction de remplacement de motifs, essaye strreplace ou stringreplace? Vérifie tout de même la syntaxe dans la doc., et vérifie que seuls les champs désirés sont changés.

Reply

Marsh Posté le 22-02-2006 à 00:02:04    

merci, il me dit que la syntax n'est pas bonne (c'est du MySQL 4.1), ce qu'il me dit :
 
'(`post`,CONVERT( _utf8 'forumv2'  
USING latin1 ), CONVERT( _utf8 'forum'  
USIN' at line 2
 
j'ai essayé avec "stringreplace", il me fait pareil :/


Message édité par Calamarpowaaah le 22-02-2006 à 00:11:34
Reply

Marsh Posté le 22-02-2006 à 00:39:34    

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


 
Plus d infos:
http://dev.mysql.com/doc/refman/4. [...] tions.html

Reply

Marsh Posté le 22-02-2006 à 05:35:19    

ok j'ai lu donc je fait  
 
SELECT REPLACE ('%forumv2%', 'forumv2', 'forum')
FROM  'ibf_posts'
WHERE 'post' LIKE ('%forumv2%')
 
Ca semble correcte ? (j'ose pas essayer peur de tout péter  :whistle: )
EDIT : bon ca marche pas  mais je sens qu'ya un truc qui colle pas, bon je cherche :/
 
EDIT 2 : ok j'ai trouvé ça donne ça :
 
SELECT REPLACE (
`post` ,
'forumv2',
'forum'
)
FROM `ibf_posts`  
LIMIT 0 ,
30  
 
Maintenant je dois faire un UPDATE pour que ça fonctionne.


Message édité par Calamarpowaaah le 22-02-2006 à 05:59:41
Reply

Marsh Posté le 22-02-2006 à 06:30:22    

Cool, bon j'ai réussi merci à tous :) :) :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed