请教oralce11g CLOB转化成Varchar2的问题

[复制链接]
查看11 | 回复9 | 2015-8-24 15:25:59 | 显示全部楼层 |阅读模式
本帖最后由 cha__shao 于 2015-8-14 16:24 编辑
目前面临的场景:
在业务系统数据库里用的是clob类型,抽取到分析系统之后,想分析数据很不方便。每个clob对应一个ID,clob里是这样存的:XXXX【分隔符】YYY【分隔符】ZZZZZZ【分隔符】。。。
要拆成 多行,每行的类型是varchar2(每一行的长度是不会超过4000的),最终结果:
ID1 XXXX
ID1 YYY
ID1 ZZZZZ
。。。
ID2。。。
ID2。。。
。。。。
我想到的方法:
1、先将clob转成varchar2;
2、然后用正则表达式分割。
问题:
1、有没有别的方法?
2、如果你认为也是用我这个方法,那么要解决CLOB长度大于4000的问题。就是怎么能够让一个长度超过4000的CLOB存放到多个VARCHAR2中?
3、正则表达式分割我写成一个函数,但返回值就不好用了,我把返回值设为table,当输入多个id时,就变成
ID1 collection
ID2 collection
。。。
点击collection才能看到详细的数据,不能返回成我上面所想要的那种结果。
谢谢

回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
你试试 CAST_TO_VARCHAR2好不好使,好久不用了,我们这边都是python脚本直接跑的
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
方法3是对的。你可以用TABLE()把结果展开。
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
为什么不直接用varchar,反正每行不超过4000
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
字节数的限制不同的
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
lastwinner 发表于 2015-8-15 22:56
字节数的限制不同的

Clob不该在数据库里再处理
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
〇〇 发表于 2015-8-15 20:20
为什么不直接用varchar,反正每行不超过4000

我的意思是 用分隔符分割成varchar2 后,每个不超过4000,原先存在clob里没分割之前,是可能超过4000的
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
newkid 发表于 2015-8-14 23:56
方法3是对的。你可以用TABLE()把结果展开。

请问怎么用table展开呢?我查询得到的信息是这样的:


QQ图片20150817091918.png (7.78 KB, 下载次数: 1)
下载附件
2015-8-17 09:20 上传


回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
cha__shao 发表于 2015-8-17 09:04
我的意思是 用分隔符分割成varchar2 后,每个不超过4000,原先存在clob里没分割之前,是可能超过4000的

我的意思是反正你要处理的数据都不超过4000,多存几行不就行了
回复

使用道具 举报

千问 | 2015-8-24 15:25:59 | 显示全部楼层
newkid 发表于 2015-8-14 23:56
方法3是对的。你可以用TABLE()把结果展开。

同问:collection里面的值怎么用查询的方式拿出来?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行