我有一个包含一个clob列的表,其中包含XML数据。 假设我想在clob列中用ABC替换XYZ。 是否可以使用sqlplus?
答案 0 :(得分:6)
为什么不试试呢?
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>
答案 1 :(得分:5)
“我在列中有新行。任何 建议?“
换行符是字符;如果要修改包含它们的文本,则需要将它们包含在搜索字符串中。您可以使用以ASCII值作为参数的CHR()来完成此操作。您需要包含的准确代码因操作系统而异。因为我在MS Windows上运行了这个例子,我需要传递换行符(ASCII = 10)和回车符(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>
顺便说一句,如果要存储XML文本,则可能值得使用列的XMLType数据类型而不是CLOB。它带有许多有用的功能。
答案 2 :(得分:0)
是的,可以使用一个REPLACE()函数。试试:
update nnn set c1 = REPLACE(c1,'ABC>','XYZ>')