是否可以使用SQL更新CLOB中的数据?

时间:2010-06-29 10:45:51

标签: sql oracle blob clob

我有一个包含一个clob列的表,其中包含XML数据。 假设我想在clob列中用ABC替换XYZ。 是否可以使用sqlplus?

3 个答案:

答案 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>')