Utilisation de REPLACE sous MySql

Résolu/Fermé
-Gio - 16 févr. 2011 à 10:45
 wolfatthedoor - 21 janv. 2015 à 14:53
Bonjour,

Comment remplacer une zone de texte variable qui commence toujours par une balise entrée 'chainedebut' et fini toujours une balise de fin 'chainefin' ?
du style

UPDATE Table SET champ=REPLACE(champ,'chainedebut%chainefin','nouvellechaine') WHERE champ LIKE 'EXPRESSION';

avec
champ[1]= bla bla chainedebut bla bla chainefin bla bla
champ[2]= bla bla chainedebut bla bla chainefin bla bla
...

Merci




3 réponses

salut,
a mon avis le plus simple de récupérer le début de ta chaine d'une part et la fin d'autre part. Ensuite tu concatene le tout avec le contenu de ton div :
chaine_deb + nouveau_div + fin_chaine

tu peux recuperer le debut avec un truc du genre substring(tonchamps,locate(tonchamps,'<div...>')

tu peux recuperer la fin avec SUBSTRING(tonchamps FROM locate(tonchamps,'</div>' );

et tu finis par un concat.

cf https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
1
Merci, çà fonctionne, on a gagné pas mal temps je t'en remercie.
Bonne journée
0
wolfatthedoor > -gio
21 janv. 2015 à 14:53
Bonjour gio,
j'ai la même problématique sauf qu'au lieu de remplacer le contenu entre deux balises, je souhaite le supprimer.
Avez-vous encore sous le coude le code que vous avez utilisé ? je ne trouve pas la réponse.
Par avance merci
0
wazertyuiop Messages postés 32 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 1
Modifié par wazertyuiop le 16/02/2011 à 11:10
Bonjour, tu pourrais nous dire textuellement sans la requête ce que tu veux faire et avec un exemple concret ? car la ce n'est pas très compréhensible
0
Je dois remplacer le contenu d'un champ de type texte qui contient du HTML sous MySQL (je ne veux pas passer sous php.
Dans ce contenu HTML il y a la balise '<div id='infoclient'>' (ma balise de début) '</div>' (ma balise de fin) dans lequel j'ai besoin de remplacer tout le texte situé entre ces deux balises
le problème est que le texte contenu dans les deux balises n'est pas constant donc impossible d'utiliser UPDATE Table SET champ=REPLACE (champ,'chainearemplacer','nouvellechaine') WHERE ...
0
wazertyuiop Messages postés 32 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 1
16 févr. 2011 à 12:00
Je sais pas si c'est moi qui est la polio ou toi qui ne te rend pas compte que ce que tu dis est totalement incompréhensible
champ de type texte qui contient du HTML sous MySQL (je savais pas qu'on pouvait faire du html sous mysql etc.. enfin bref comprend pas)
tu dis que tu peux pas utiliser
PDATE Table SET champ=REPLACE (champ,'chainearemplacer','nouvellechaine') WHERE
pour remplacer le texte dans
<div id='infoclient'>' (ma balise de début) '</div>

si quelqu'un d'autre arrive a comprendre ce qu'il veut faire expliquer moi
ou essai toi d'expliquer clairement ce que tu veux car je pense que tu n'as aucune réponse non pas parce que les gens ne savent pas faire mais parce qu'ils ne comprennent rien
0
Dans un champ Mysql de type TEXTE
nous avons stocké du TEXTE au format HTML.
Nous aimerions remplacer via une requête mysql, une partie de ce contenu
Ce contenu à remplacer est délimité par 2 balises:
une balise de début : <div id='infoclient'>
une balise de fin : </div>

question. Comment remplacer le bla bla en gras ?
sachant que le contenu du champ de la BD est de la forme suivante
...bla...<div id='infoclient'>bla bla</div>...bla.....

sachant que le bla bla n'est pas une constante (mais bien variable) entre les différents enregistrement de la base de donnée

Celà vous semble t il plus lisible ?
0