替换CLOB列中的字符(db2)

时间:2015-07-21 12:04:41

标签: db2 clob

我在db2(v10)数据库中有一个CLOB(2000000)字段,我想在其上运行一个简单的UPDATE查询来替换" foo"到" baaz"。

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

"{some char data from field}" is too long.. SQLCODE=-433, SQLSTATE=22001

如何更换值?

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

SELECT REPLACE(my_clob_column, 'foo', 'baaz') FROM my_table WHERE id = 10726

更新2 正如mustaccio指出的那样,REPLACE不适用于CLOB字段(或者至少没有对输入的数据进行转换VARCHAR - 在我的情况下,由于尺寸不可能数据超过32k) - 问题是如何找到另一种方法来获取REPLACE字段的CLOB功能。

谢谢, krisy

2 个答案:

答案 0 :(得分:1)

最后,由于我通过SQL查询找不到这个,我最终导出了表,在Notepad ++中编辑了其lob内容,然后再次导入表。

答案 1 :(得分:0)

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

顺便说一句:您可以通过执行“值(当前路径)”

来检查功能分辨率