Oracle 逗号字符串转成行

With test As
 (Select '1' a, '2' b, '3' c, '121,122,123' d, '201,202,203' e From dual) --1条数据
Select a,
       b,
       c,
       substr(t.cd,
              instr(t.cd, ',', 1, d.lv) + 1,
              instr(t.cd, ',', 1, d.lv + 1) -
              (instr(t.cd, ',', 1, d.lv) + 1)) As d,
       substr(t.ce,
              instr(t.ce, ',', 1, d.lv) + 1,
              instr(t.ce, ',', 1, d.lv + 1) -
              (instr(t.ce, ',', 1, d.lv) + 1)) As e
  From (Select a,
               b,
               c,
               ',' || d || ',' As cd,
               ',' || e || ',' As ce,
               length(d || ',') - nvl(length(Replace(d, ',')), 0) As cnt
          From test) t,
       (Select Level lv From dual Connect By Level <= 100) d
 Where d.lv <= t.cnt


结果
1	2	3	121	201
1	2	3	122	202
1	2	3	123	203

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值