替换CLOB列中的字符(db2)

kri*_*isy 9 db2 clob

CLOB(2000000)在db2(v10)数据库中有一个字段,我想UPDATE对它运行一个简单的查询,将每个出现的"foo"替换为"baaz".

由于该字段的内容超过32k,我收到以下错误:

"{some char data from field}" is too long.. SQLCODE=-433, SQLSTATE=22001
Run Code Online (Sandbox Code Playgroud)

如何更换值?

更新:查询如下(将UPDATE更改为SELECT以便于测试):

SELECT REPLACE(my_clob_column, 'foo', 'baaz') FROM my_table WHERE id = 10726
Run Code Online (Sandbox Code Playgroud)

更新2 正如mustaccio所指出的那样,REPLACECLOB字段不起作用(或者至少没有VARCHAR对输入的数据进行强制转换- 在我的情况下,由于数据大小超过32k而不可能) - 问题是关于找到一种替代方法来REPLACE实现CLOB字段的功能.

谢谢,克里西

dat*_*rik 0

不确定这是否适用于您的情况:DB2 提供了 2 种不同的 REPLACE 函数:SYSIBM.REPLACESYSFUN.REPLACE。SYSFUN 中的 REPLACE 版本接受 CLOB 并支持最大 1 MB 的值。如果您的值比您需要编写自己的(基于 SQL?)函数长。

顺便说一句:您可以通过执行“values(当前路径)”来检查函数解析