Oracle字符串转换成多行

create table T_STR_COL
(
  ID   INTEGER,
  C123 VARCHAR2(32)

)

insert into T_STR_COL (ID, C123)
values (1, 'v11,v21,v31');
insert into T_STR_COL (ID, C123)
values (2, 'v12,v22');
insert into T_STR_COL (ID, C123)
values (3, 'v13,v33');
insert into T_STR_COL (ID, C123)
values (4, 'v24,v34');
insert into T_STR_COL (ID, C123)
values (5, 'v15');
insert into T_STR_COL (ID, C123)
values (6, 'v35');
insert into T_STR_COL (ID, C123)
values (7, null);
commit;

SELECT * FROM T_STR_COL;


SELECT T1.ID, REGEXP_SUBSTR(T1.C123, '[^,]+', 1, T2.LEV) REGION_ID
  FROM (SELECT T.*,
               LENGTH(T.C123) - LENGTH(REPLACE(T.C123, ',', '')) + 1 RN
          FROM T_STR_COL T) T1,
       (SELECT LEVEL LEV
          FROM DUAL
        CONNECT BY LEVEL <= (SELECT SUM(LENGTH(T.C123) -
                                        LENGTH(REPLACE(T.C123, ',', '')) + 1) RN
                               FROM T_STR_COL T)) T2
 WHERE T2.LEV <= T1.RN
 ORDER BY ID, LEV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值