|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour a tous,
je galere pour faire un replace avec ORACLE. j'ai ceci: Citation:
Quelqu'un saurais comment faire? J'ai essaye avec ca: update HDEMETADATA_TMP set VALUE=REPLACE('toute la chaine','la nouvelle cahine') where MID='20232'; mais ca marche pas...car en fait cette partie que je veux remplacer est juste un fragment ...il y a plein d'info avant et apres, donc il faut localiser et remplacer. D'avance merci |
|
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Merci, je vais regarder ca.
A+ |
|
|
00
|
|
|
#4 | ||
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 495 ![]() |
Je suppose que ce que tu nous a présenté au format xml est dans une base Oracle. Dans ce cas, si ta balise VALUE est une colonne de la table HDEMETADATA_TMP, c'est possible avec REPLACE, mais REPLACE a besoin de 3 arguments (chaîne sur laquelle on travaille, chaîne recherchée, chaîne substituée).
Ca donne donc : Code :
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche ! |
||
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Mmmm
ca implique de faire un copier coller de toute la chaine dans la fonction... Y'a pas un moyen de lui dire: regarde dans ce champs (value) et lorsque tu voie une IP (la on pourrait donner les 3 premiers chiffres qui sont toujours les memes) remplace la par une autre IP. C'est faisable ca? car dans cette base y'a une quantité impresionnante de lignes concernées L'idée serait de faire un update avec dans la condition: WHERE ID in(select ou ID between xx and xx D'avance merci |
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 495 ![]() |
C'est exactement ce que fait le REPLACE, en l'utilisant comme je l'ai décris : tu ne fais pas un copier/coller de la chaîne dans la fonction, tu utilises la variable ou le nom de colonne de la table dans laquelle cette chaîne de caractère est stockée.
J'espère seulement pour toi que tu as les données en base...
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche ! |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour,
ok alors il reste un truc que je comprend pas, si on reprend cet exemple: UPDATE HDEMETADATA_TMP SET VALUE=REPLACE(VALUE, 'toute la chaine', 'la nouvelle chaine') WHERE MID='20232'; je dois mettre quoi a la place de 'toute la chaine' ? Si on considere que c'est le contenu ENTIER de VALUE que je veux remplacer Haaaa ou alors ici je dois mettre seulement le fragment que je veux remplacer? par exemple s'il y a tout le blabla en XML et dedans il y a <ip_range>une ip</ip_range> je met a la pace de 'toute la chaine' '<ip_range>une ip</ip_range>' et je remplace par '<ip_range>une nouvelle ip</ip_range>' C'est comme ca? D'avance merci |
|
|
00
|
|
|
#8 |
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 495 ![]() |
Effectivement, on ne devrait pas dire "toute la chaîne", mais "chaîne recherchée".
Par exemple, si tu as une colonne COL qui contient 'TOTO', que tu fais un REPLACE(COL, 'O', 'A'), le résultat sera 'TATA'
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche ! |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
OK ca marche,
c'est genial merci pour ton aide A + Luis |
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
sinon, il y a la doc Oracle qui est pas mal aussi
|
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Salut
Oui je suis entierement d'accord. TU sais j'ai participe aux cours oracle et ils te file des livres. Donc le premier reflexe a ete de regarder la dedans. Mais c'est asses general. J'ai pas trouvé d'exemple avec replace pour ca. Ensuite forum oracle... existe t'il une doc oracle genre ONLINE? avec ce genre de problemes? avec des exemples? |
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
La doc Oracle ONLINE contient pas mal des examples.
|
|
|
00
|
|
|
#13 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
tu l'aurais su
|
|
|
|
00
|
|
|
#14 | ||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour,
dans la doc j'ai pas vu le probleme que j'ai maintenant: le replace fonctionne mais un des strings que je dois remplacer contient des "" donc j'ai testé ceci: des escape \" Code :
Code :
quelqu'un a une idée? D'avance merci |
||||
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
t'as pas des retours à la ligne ?
Sinon, tu peux avoir une mise à jour réussie... qui ne modifie rien PS : penses aux balises CODE |
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Salut
dans le string j'ai ca: /exlibris/digitool/repository/api/xmlbeans" enabled= "false"><ar_copyrights required="false"><text_file>< tu as raison apres le = il y a un retour a la ligne...mais ca c'est l'affichage tu crois? ou la valeur dans le champs peu etre comme ca? C'est quoi une balise CODE? |
|
|
00
|
|
|
#17 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
|
|
|
00
|
|
|
#18 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Salut a tous,
bon bref je sais pas pourquoi mais le replace avec delimiteur ' ' fonctione meme s'il y a des " a l'interieur donc le replace(value,'enabled="true"','enabled="flase"') marche Merci a tous pour votre aide |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com