发现问题
当我们遇到Oracle中的Clob类型时,该如何处理呢?
处理方法
常用的有三种处理方法
1.使用dbms_lob.substr函数将Clob字段转为字符串类型。
select dbms_lob.substr(F_BUSS_NAME) as F_BUSS_NAME ,F_DATA_ID from T_DEMO t where 1=1
2.使用dbms_lob.substr带偏移量函数将Clob字段转为字符串类型。
select dbms_lob.substr(F_BUSS_NAME,1000,1) as F_BUSS_NAME ,F_DATA_ID from T_DEMO t where 1=1
3.以上两种方法都有缺点:当数据长度大于4000/3时,oralce数据库会报异常:缓冲区较小。所以采用Java程序处理的方式,长度限制扩大为String的变量长度限制:2的31次方约等于2G。(String的常量类型大小限制为65534)。
select F_BUSS_NAME ,F_DATA_ID from T_DEMO t where 1=1
if (colValue instanceof Clob) {
Clob clob=(Clob) colValue;
if(clob!=null){
colValue=clob.getSubString((long)1, (int)clob.length());
}
}
结论
使用上述方法三可以完整地获取Clob类型字段,推荐使用。