
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 展开
COL1 COL2
A 010000000000000010000
A 000000001000000010000
A 100000000001000000010
B 000000110001000000000
B 000100000000000000001
B 000001000001100010000
最后想得到的结果为,若有为1 的值,则替换掉为0 的值,试过SUM函数,但当数值大时会变为 1.60001E32 这类的字样
A 110000001001000010010
B 000101110001100010001 展开
4个回答
展开全部
--测试数据
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
如有字符串:
AAAAA
BBBBBB
CCCCC
若要替换AAAAA为1AAAAA就用replaceFirst('1')
最后多行合并用concat:
select concat(concat('1AAAAA','BBBBB'),'CCCCCC') from dual
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个感觉只能用sum,其他应该很麻烦。
你的COL2应该是varchar2类型,你用PL/SQL调一下显示效果就可以了,其中位数不足的在前面补0。
你的COL2应该是varchar2类型,你用PL/SQL调一下显示效果就可以了,其中位数不足的在前面补0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“最后想得到的结果为,若有为1 的值,则替换掉为0 的值”意思是用1代替0吗?
追问
可以这么理解
追答
你sum之后用to_char转换看一下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询