替换CLOB列中的字符(db2)
我在db2(v10)数据库中有一个替换CLOB列中的字符(db2),db2,clob,Db2,Clob,我在db2(v10)数据库中有一个CLOB(2000000)字段,我想对其运行一个简单的UPDATE查询,以将每次出现的“foo”替换为“baaz” 由于该字段的内容超过32k,因此出现以下错误: "{some char data from field}" is too long.. SQLCODE=-433, SQLSTATE=22001 如何替换这些值 更新: 查询如下(为便于测试,将更新更改为SELECT): 更新2 正如mustaccio所指出的,REPLACE在CLOB字段上不起作用
CLOB(2000000)
字段,我想对其运行一个简单的UPDATE
查询,以将每次出现的“foo”替换为“baaz”
由于该字段的内容超过32k,因此出现以下错误:
"{some char data from field}" is too long.. SQLCODE=-433, SQLSTATE=22001
如何替换这些值
更新:
查询如下(为便于测试,将更新更改为SELECT):
更新2
正如mustaccio所指出的,REPLACE
在CLOB
字段上不起作用(或者至少在没有对输入的数据执行强制转换到VARCHAR
的情况下不起作用-在我的情况下,这是不可能的,因为数据的大小超过32k)-问题是如何找到另一种方法来为CLOB
字段获取REPLACE
功能性
谢谢,
krisy不确定这是否适用于您的情况:DB2提供了两种不同的替换函数,和。SYSFUN中的REPLACE版本接受CLOB并支持高达1 MB的值。如果您的值比您需要编写自己的(基于SQL的?)函数的时间长
顺便说一句:您可以通过执行“values(current path)”来检查函数解析。最后,由于我没有通过SQL查询找到实现这一点的方法,我最终导出了表,在Notepad++中编辑了表的lob内容,然后再次导入了表。您可能希望显示您运行的实际语句。另外,这是DB2forz/OS吗?(它是唯一一个有版本10的平台。)用queryThe函数更新了我的问题
REPLACE
接受并返回VARCHAR
,因此显然不能使用它来处理CLOB
列。您试过db2内置模块吗?我试过dbms\u lob;它包含很多有用的方法,但没有替换。另外,SYSFUN.REPLACE也有同样的限制(32k),谢谢您的回答!遗憾的是,我的字段大于1Mb(约3-4Mb)
SELECT REPLACE(my_clob_column, 'foo', 'baaz') FROM my_table WHERE id = 10726