ORACLE 多行字符串合并的问题

oracle10g所以listagg没法用COL1COL2A010000000000000010000A000000001000000010000A10000000000... oracle 10g 所以 listagg 没法用
COL1 COL2
A 010000000000000010000
A 000000001000000010000
A 100000000001000000010
B 000000110001000000000
B 000100000000000000001
B 000001000001100010000
最后想得到的结果为,若有为1 的值,则替换掉为0 的值,试过SUM函数,但当数值大时会变为 1.60001E32 这类的字样
A 110000001001000010010
B 000101110001100010001
展开
 我来答
frogley
2014-03-11 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1110万
展开全部
--测试数据
with tmp(COL1,COL2) as (
select 'A','010000000000000010000' from dual union all
select 'A','000000001000000010000' from dual union all
select 'A','100000000001000000010' from dual union all
select 'B','000000110001000000000' from dual union all
select 'B','000100000000000000001' from dual union all
select 'B','000001000001100010000' from dual)
--直接取每一位,进行聚合或操作,再拼接起来
select COL1
,max(substr(COL2,1,1))||max(substr(COL2,2,1))||max(substr(COL2,3,1))||max(substr(COL2,4,1))||max(substr(COL2,5,1))||max(substr(COL2,6,1))||max(substr(COL2,7,1))||max(substr(COL2,8,1))||max(substr(COL2,9,1))||max(substr(COL2,10,1))||max(substr(COL2,11,1))||max(substr(COL2,12,1))||max(substr(COL2,13,1))||max(substr(COL2,14,1))||max(substr(COL2,15,1))||max(substr(COL2,16,1))||max(substr(COL2,17,1))||max(substr(COL2,18,1))||max(substr(COL2,19,1))||max(substr(COL2,20,1))||max(substr(COL2,21,1)) as COL2
from tmp
group by COL1;

结果:

千锋教育
2016-01-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
ORACLE 多行字符串无法合并因为并未提供这样的函数,需要对每个字符串单独处理后,用concat拼接处理。
如有字符串:
AAAAA
BBBBBB

CCCCC
若要替换AAAAA为1AAAAA就用replaceFirst('1')
最后多行合并用concat:
select concat(concat('1AAAAA','BBBBB'),'CCCCCC') from dual
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TUBER727
2014-03-12 · TA获得超过428个赞
知道小有建树答主
回答量:351
采纳率:100%
帮助的人:119万
展开全部
这个感觉只能用sum,其他应该很麻烦。
你的COL2应该是varchar2类型,你用PL/SQL调一下显示效果就可以了,其中位数不足的在前面补0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaiyanghao123
2014-03-10 · TA获得超过1615个赞
知道小有建树答主
回答量:1219
采纳率:66%
帮助的人:589万
展开全部
“最后想得到的结果为,若有为1 的值,则替换掉为0 的值”意思是用1代替0吗?
追问
可以这么理解
追答
你sum之后用to_char转换看一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式