[WD11] remplacer une chaine avec une requête SQL ?

Le
Vincent
Bonjour,

Je désire remplacer dans une base de données via une requête SQL, une chaine
par une autre, du genre :

partout où il y a Bonjour, remplacer par Bonsoir

Bonjour -> Bonsoir

Bonjour toi ! -> Bonsoir toi !

Bien le Bonjour -> Bien le Bonsoir

Merci

tout exemple est le bien venu !

Vincent
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vincent
Le #14472961
Bon, j'avais pas cherché longtemps, il faut utiliser replace ( expliqué dans
la doc windev chercher : replace )

Je donnerai un exemple, dès que ça marchera :)

Vincent


"Vincent" news:4742a680$0$5101$
Bonjour,

Je désire remplacer dans une base de données via une requête SQL, une
chaine par une autre, du genre :

partout où il y a Bonjour, remplacer par Bonsoir

Bonjour -> Bonsoir

Bonjour toi ! -> Bonsoir toi !

Bien le Bonjour -> Bien le Bonsoir

Merci

tout exemple est le bien venu !

Vincent


Vincent
Le #14472951
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4, colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
Bon, j'avais pas cherché longtemps, il faut utiliser replace ( expliqué
dans la doc windev chercher : replace )

Je donnerai un exemple, dès que ça marchera :)

Vincent


"Vincent" news:4742a680$0$5101$
Bonjour,

Je désire remplacer dans une base de données via une requête SQL, une
chaine par une autre, du genre :

partout où il y a Bonjour, remplacer par Bonsoir

Bonjour -> Bonsoir

Bonjour toi ! -> Bonsoir toi !

Bien le Bonjour -> Bien le Bonsoir

Merci

tout exemple est le bien venu !

Vincent





patrice
Le #14472941
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4, colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace ( expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL, une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>



Vincent
Le #14472731
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple

"patrice" news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4,
colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace ( expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL, une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>







Emmanuel LECOESTER
Le #14472681
"Vincent" 47448c87$0$27380$
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple



Je vais faire sourire les anti SQL :).

Un simple
HLP+F5 (ELEMENT)
tant que pas H.endehors
si ELEMENT.ELE_ARBRE contient {Param1} alors
ELEMENT.ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
Hupdate(ELEMENT)
fin si
fin
HLS+F5
fin

Pourquoi ?

Parce que ton update doit faire un parcours complet dans la table + une
lecture de la colonne ele_arbre de manière exhaustive (like). Donc autant
tout faire en une passe avec un beau petit code.


"patrice" news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4,
colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace (
> expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL, une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>











Roumegou Eric
Le #14472671
Emmanuel LECOESTER a présenté l'énoncé suivant :
"Vincent" 47448c87$0$27380$
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple



Je vais faire sourire les anti SQL :).



<guitare voix de cowboy>
si toi aussi tu m'abandonnes ...
</guitare voix de cowboy>

--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour m'écrire)
Vincent
Le #14472601
Merci pour ton aide, j'avais fait la même chose sur une base postgres ( en
C# ) et ca marche très bien.

J'ai 20000 lignes à modifier, avec ton code je dois faire 20000 updates.

Il doit bien y avoir un moyen de faire un update avec un replace !!!
ou alors hyperfile et vraiment limité et non standard.

Quelqu'un a certainement une réponse à ce problème.
( ou alors je laisse tomber hyperfile !?)

Merci

Vincent

ps : je vais poser la question à pc soft


"Emmanuel LECOESTER" news: 474511cb$0$27372$

"Vincent" 47448c87$0$27380$
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple



Je vais faire sourire les anti SQL :).

Un simple
HLP+F5 (ELEMENT)
tant que pas H.endehors
si ELEMENT.ELE_ARBRE contient {Param1} alors
ELEMENT.ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
Hupdate(ELEMENT)
fin si
fin
HLS+F5
fin

Pourquoi ?

Parce que ton update doit faire un parcours complet dans la table + une
lecture de la colonne ele_arbre de manière exhaustive (like). Donc autant
tout faire en une passe avec un beau petit code.


"patrice" news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4,
colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace (
> expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL,
>> une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>















Emmanuel LECOESTER
Le #14472591
"Vincent" 4745b617$0$5074$
Merci pour ton aide, j'avais fait la même chose sur une base postgres ( en
C# ) et ca marche très bien.

J'ai 20000 lignes à modifier, avec ton code je dois faire 20000 updates.



Non tu fais le nombre d'update nécessaire vu que tu testes auparavant ! le
nombre de lignes maj sera strictement identique. Fais un explain plan de ta
requete et tu verra :

Update
|- Table access Full

ou encore
Update
|- Table acce by rowid
|- Use Index XXXX

Et ce qqsoit la base de données ;)

Il doit bien y avoir un moyen de faire un update avec un replace !!!
ou alors hyperfile et vraiment limité et non standard.



Bienvenu dans le monde des SGBD... aucun d'entre eux ne suit toutes les
normes SQL.

Quelqu'un a certainement une réponse à ce problème.
( ou alors je laisse tomber hyperfile !?)



Oui celle que je t'ai donnée.

Merci

Vincent

ps : je vais poser la question à pc soft



Donne nous leur réponse ^^


"Emmanuel LECOESTER" news: 474511cb$0$27372$

"Vincent" 47448c87$0$27380$
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple



Je vais faire sourire les anti SQL :).

Un simple
HLP+F5 (ELEMENT)
tant que pas H.endehors
si ELEMENT.ELE_ARBRE contient {Param1} alors
ELEMENT.ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
Hupdate(ELEMENT)
fin si
fin
HLS+F5
fin

Pourquoi ?

Parce que ton update doit faire un parcours complet dans la table + une
lecture de la colonne ele_arbre de manière exhaustive (like). Donc autant
tout faire en une passe avec un beau petit code.


"patrice" de news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4,
colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace (
> expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL,
>> une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>




















Vincent
Le #14472571
je comprends rien à ton explication :)

+F5 c'est quoi ?

Vincent


"Emmanuel LECOESTER" news: 4745cb6a$0$5104$

"Vincent" 4745b617$0$5074$
Merci pour ton aide, j'avais fait la même chose sur une base postgres (
en C# ) et ca marche très bien.

J'ai 20000 lignes à modifier, avec ton code je dois faire 20000 updates.



Non tu fais le nombre d'update nécessaire vu que tu testes auparavant ! le
nombre de lignes maj sera strictement identique. Fais un explain plan de
ta requete et tu verra :

Update
|- Table access Full

ou encore
Update
|- Table acce by rowid
|- Use Index XXXX

Et ce qqsoit la base de données ;)

Il doit bien y avoir un moyen de faire un update avec un replace !!!
ou alors hyperfile et vraiment limité et non standard.



Bienvenu dans le monde des SGBD... aucun d'entre eux ne suit toutes les
normes SQL.

Quelqu'un a certainement une réponse à ce problème.
( ou alors je laisse tomber hyperfile !?)



Oui celle que je t'ai donnée.

Merci

Vincent

ps : je vais poser la question à pc soft



Donne nous leur réponse ^^


"Emmanuel LECOESTER" de news: 474511cb$0$27372$

"Vincent" 47448c87$0$27380$
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple



Je vais faire sourire les anti SQL :).

Un simple
HLP+F5 (ELEMENT)
tant que pas H.endehors
si ELEMENT.ELE_ARBRE contient {Param1} alors
ELEMENT.ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
Hupdate(ELEMENT)
fin si
fin
HLS+F5
fin

Pourquoi ?

Parce que ton update doit faire un parcours complet dans la table + une
lecture de la colonne ele_arbre de manière exhaustive (like). Donc
autant tout faire en une passe avec un beau petit code.


"patrice" de news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4,
colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace (
> expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL,
>> une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>
























Vincent
Le #14472561
J'ai un peu avancé !!! (j'applique ta méthode en attendant )

ca ca marche :

UPDATE
ELEMENT
SET
ELE_ARBRE = WL.REPLACE(ELEMENT.ELE_ARBRE,'.','-') <---- ! WD.REPLACE :
WHERE
ELE_ARBRE LIKE {Param1}

ce qui ne marche pas :

UPDATE
ELEMENT
SET
ELE_ARBRE = WL.REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2}) <--- y veut des
chaines et pas des paramètres grrrrrrr
WHERE
ELE_ARBRE LIKE {Param1}



Vincent

"Vincent" 4745fe27$0$25917$
je comprends rien à ton explication :)

+F5 c'est quoi ?

Vincent


"Emmanuel LECOESTER" news: 4745cb6a$0$5104$

"Vincent" 4745b617$0$5074$
Merci pour ton aide, j'avais fait la même chose sur une base postgres
( en C# ) et ca marche très bien.

J'ai 20000 lignes à modifier, avec ton code je dois faire 20000 updates.



Non tu fais le nombre d'update nécessaire vu que tu testes auparavant !
le nombre de lignes maj sera strictement identique. Fais un explain plan
de ta requete et tu verra :

Update
|- Table access Full

ou encore
Update
|- Table acce by rowid
|- Use Index XXXX

Et ce qqsoit la base de données ;)

Il doit bien y avoir un moyen de faire un update avec un replace !!!
ou alors hyperfile et vraiment limité et non standard.



Bienvenu dans le monde des SGBD... aucun d'entre eux ne suit toutes les
normes SQL.

Quelqu'un a certainement une réponse à ce problème.
( ou alors je laisse tomber hyperfile !?)



Oui celle que je t'ai donnée.

Merci

Vincent

ps : je vais poser la question à pc soft



Donne nous leur réponse ^^


"Emmanuel LECOESTER" de news: 474511cb$0$27372$

"Vincent" 47448c87$0$27380$
Ca ne marche pas, je ne suis par certain de la syntaxe.
Je cherche un exemple



Je vais faire sourire les anti SQL :).

Un simple
HLP+F5 (ELEMENT)
tant que pas H.endehors
si ELEMENT.ELE_ARBRE contient {Param1} alors
ELEMENT.ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
Hupdate(ELEMENT)
fin si
fin
HLS+F5
fin

Pourquoi ?

Parce que ton update doit faire un parcours complet dans la table + une
lecture de la colonne ele_arbre de manière exhaustive (like). Donc
autant tout faire en une passe avec un beau petit code.


"patrice" de news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" news:4742af0d$0$27395$
J'ai essayé :

UPDATE
ELEMENT
SET
ELE_ARBRE = REPLACE(ELEMENT.ELE_ARBRE,{Param1},{Param2})
WHERE
ELE_ARBRE LIKE {Param1}

Mais rien à faire le message :

Warning : Mot {Param1} inattendu REQ_MOD_NOEUD, Code SQL, ligne 4,
colonne
40

Une idée ?

Merci

Vincent


"Vincent" news:4742a767$0$5090$
> Bon, j'avais pas cherché longtemps, il faut utiliser replace (
> expliqué
> dans la doc windev chercher : replace )
>
> Je donnerai un exemple, dès que ça marchera :)
>
> Vincent
>
>
> "Vincent" > news:4742a680$0$5101$
>> Bonjour,
>>
>> Je désire remplacer dans une base de données via une requête SQL,
>> une
>> chaine par une autre, du genre :
>>
>> partout où il y a Bonjour, remplacer par Bonsoir
>>
>> Bonjour -> Bonsoir
>>
>> Bonjour toi ! -> Bonsoir toi !
>>
>> Bien le Bonjour -> Bien le Bonsoir
>>
>> Merci
>>
>> tout exemple est le bien venu !
>>
>> Vincent
>




























Publicité
Poster une réponse
Anonyme