Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

12 réponses
Avatar
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

10 réponses

1 2
Avatar
Vincent
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" a écrit dans le message de
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


Avatar
Vincent
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" a écrit dans le message de
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" a écrit dans le message de
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





Avatar
patrice
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>



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

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

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>







Avatar
Emmanuel LECOESTER
"Vincent" a écrit dans le message de news:
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" a écrit dans le message de
news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>











Avatar
Roumegou Eric
Emmanuel LECOESTER a présenté l'énoncé suivant :
"Vincent" a écrit dans le message de news:
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)
Avatar
Vincent
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" a écrit dans le message de
news: 474511cb$0$27372$

"Vincent" a écrit dans le message de news:
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" a écrit dans le message de
news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>















Avatar
Emmanuel LECOESTER
"Vincent" a écrit dans le message de news:
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" a écrit dans le message de
news: 474511cb$0$27372$

"Vincent" a écrit dans le message de news:
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" a écrit dans le message
de news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>




















Avatar
Vincent
je comprends rien à ton explication :)

+F5 c'est quoi ?

Vincent


"Emmanuel LECOESTER" a écrit dans le message de
news: 4745cb6a$0$5104$

"Vincent" a écrit dans le message de news:
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" a écrit dans le message
de news: 474511cb$0$27372$

"Vincent" a écrit dans le message de news:
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" a écrit dans le message
de news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>
























Avatar
Vincent
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" a écrit dans le message de news:
4745fe27$0$25917$
je comprends rien à ton explication :)

+F5 c'est quoi ?

Vincent


"Emmanuel LECOESTER" a écrit dans le message de
news: 4745cb6a$0$5104$

"Vincent" a écrit dans le message de news:
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" a écrit dans le message
de news: 474511cb$0$27372$

"Vincent" a écrit dans le message de news:
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" a écrit dans le message
de news:4742b0ca$0$20126$
construit toi meme le texte de la requete dans une chaine et utilise
hexecuterequetesql

"Vincent" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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
>




























1 2