oracle如何将以固定分隔符(逗号)分隔的多行字符串拆分为多行(表生成)

--将多行字符串拆分

with p as --构建数据临时表
 (select 1 as id, 'aa,bb,cc,dd,ee' as split_string, 1 as num
    from dual
  union all
  select 2, 'ff,gg,hh,ii,jj,kk', 3
    from dual
  union all
  select 3, 'aa,bb,cc,dd,ee', 2
    from dual
  union all
  select 4, 'ff,gg,hh,ii,jj,kk', 4
    from dual)
select t1.split_string,
       regexp_substr(t1.split_string, '[^,]+', 1, level) as split_string,
--level为对应第level个所拆分字符串;正则表达式匹配分隔符拆分
       t1.num
  from p t1
connect by t1.id = prior t1.id --递归自身
       and prior dbms_random.value is not null--避免死循环
       and level <= length(t1.split_string) -
           length(regexp_replace(t1.split_string, ',', '')) + 1 --找到拆分字符串个数,即分隔符个数加1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值