【发布时间】:2018-02-27 14:49:41
【问题描述】:
我在 DB2 中有一个列类型为 BLOB 的表,我想将其转换为 CLOB 类型。我这里的方法是创建一个 CLOB 类型的新列,将所有数据从 BLOB 列复制到 CLOB 列,删除 BLOB 列并重命名 CLOB 列。但是,我不确定如何执行第二步,即将数据从 BLOB 列更新到 CLOB 列。我如何在 DB2 中做到这一点。提前致谢。
【问题讨论】:
我在 DB2 中有一个列类型为 BLOB 的表,我想将其转换为 CLOB 类型。我这里的方法是创建一个 CLOB 类型的新列,将所有数据从 BLOB 列复制到 CLOB 列,删除 BLOB 列并重命名 CLOB 列。但是,我不确定如何执行第二步,即将数据从 BLOB 列更新到 CLOB 列。我如何在 DB2 中做到这一点。提前致谢。
【问题讨论】:
如果您使用的是 Db2-LUW v10.5 或更高版本,请考虑为此目的使用提供的 stored procedure CONVERTTOCLOB。当您知道数据是基于字符的时,这种转换是有意义的。
【讨论】:
您可以使用CONVERTTOCLOB 存储过程,但如果您想在查询中将 BLOB 转换为 CLOB,并且不介意将其截断为 32K 字节,则可以使用 VARCHAR() 进行转换它。下面是一个例子
create table b(b blob) organize by row;
insert into b values blob(x'F09F9880');
select cast(VARCHAR(b) as VARCHAR(4) FOR MIXED DATA) from b;
1
----
?
注意CAST( ... as VARCHAR(x) FOR MIXED DATA) 位是从VARCHAR FOR BIT DATA 转换而来的,因此输出不会以十六进制格式显示
【讨论】: