5

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

4

3 回答 3

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>
于 2010-06-29T10:53:40.380 回答
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。它带有许多有用的功能。

于 2010-06-29T11:54:17.033 回答
0

是的,可以使用一个 REPLACE() 函数。尝试:

update nnn set c1 = REPLACE(c1,'ABC>','XYZ>')
于 2016-04-19T15:20:54.777 回答