我有一个表,其中包含一个包含 XML 数据的 clob 列。假设我想在 clob 列中用 ABC 替换 XYZ。可以使用 sqlplus 吗?
问问题
55277 次
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 回答