J'ai une table ayant une colonne clob qui contient des données XML. Dites que je veux remplacer XYZ par ABC dans la colonne clob. Est-il possible d'utiliser sqlplus?Est-il possible de mettre à jour des données dans une CLOB en utilisant SQL?
Répondre
"i ont nouvelle ligne dans la colonne. des conseils?"
Les nouvelles lignes sont des caractères; Si vous voulez modifier un texte qui les contient, vous devez les inclure dans la chaîne de recherche. Vous pouvez le faire en utilisant le CHR() qui prend une valeur ASCII comme argument. Les codes précis que vous devez inclure varient en fonction du système d'exploitation. Parce que j'ai exécuté cet exemple sur MS Windows, j'ai dû passer à la fois le saut de ligne (ASCII = 10) et le retour chariot (ASCII = 13).
SQL> select * from t42
2/
TXT
--------------------------------------------------------------------------------
<ABC> ABCD
</ABC>
SQL> update t42 set txt=replace(txt,'ABCD'||chr(10)||chr(13), 'APC woz here')
2/
1 row updated.
SQL> select * from t42
2/
TXT
--------------------------------------------------------------------------------
<ABC> APC woz here </ABC>
SQL>
Soit dit en passant, si vous stockez texte XML il pourrait être utile en utilisant le type de données XMLType pour la colonne au lieu de CLOB. Il vient avec beaucoup de fonctionnalités utiles.
Pourquoi ne pas l'essayer?
SQL> create table nnn(c1 clob);
Table created.
SQL> insert into nnn values ('text ABC end');
1 row created.
SQL> select * from nnn;
C1
-------------------------------------------------
text ABC end
SQL> update nnn set c1=replace(c1,'ABC','XYZ');
1 row updated.
SQL> select * from nnn;
C1
-------------------------------------------------
text XYZ end
SQL>
merci :). ça a marché. un plus de doute. si je dois remplacer remplacer plusieurs lignes? disons que j'ai
Je ne suis pas sûr de comprendre, cela fonctionne très bien. S'il vous plaît, montrez-nous votre essai. –
dans mon xml j'ai plusieurs lignes et je veux les remplacer par une nouvelle valeur. c'est possible? – Hemant
Oui, c'est possible avec une fonction REPLACE(). Essayez:
update nnn set c1 = REPLACE(c1,'ABC>','XYZ>')
Merci qui a fonctionné. :). merci de pointer le type de données XML que je n'ai pas utilisé avant mais défini try. – Hemant