Oracle中一个列转行例子的几种不同解法

Oracle中一个列转行例子的几种解法

已知数据格式如下:
a  1,2,3
b  4,5,6

希望实现效果如下:
a  1
a  2
a  3
b  4
b  5
b  6

--创建测试表和添加测试数据
create table test( a1 varchar2(10),b1 varchar2(10));
insert into test(a1,b1) values('a','1,2,3');
insert into test(a1,b1) values('b','4,5,6');
commit;

--方法1
select a1,regexp_substr(b1,'[^,]+',1,level)
  from test
connect by level <= length(b1)-length(replace(b1,','))+1

--方法2
select a1,regexp_substr(b1,'[^,]+',1,level)
  from test
connect by level <=length(regexp_replace(b1,'[^,]+')) +1

--方法3   
select a1,regexp_substr(b1,'[^,]+',1,level)
  from test

connect by level <=regexp_count(b1,',')+1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值