我在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
答案 0 :(得分:1)
最后,由于我通过SQL查询找不到这个,我最终导出了表,在Notepad ++中编辑了其lob内容,然后再次导入表。
答案 1 :(得分:0)
不确定这是否适用于您的情况:DB2提供了2种不同的REPLACE函数,SYSIBM.REPLACE和SYSFUN.REPLACE。 SYSFUN中的REPLACE版本接受CLOB并支持最大1 MB的值。如果您的值比编写自己的(基于SQL的?)函数需要的时间长。
顺便说一句:您可以通过执行“值(当前路径)”
来检查功能分辨率