oracle 将多列,oracle 如何将带有,的一列分成多列

select regexp_substr('1,2,3' , '[^,]+' , 1 , ROWNUM) FROM dual CONNECT BY ROWNUM<=LENGTH('1,2,3')-LENGTH(regexp_replace('1,2,3' , ',' , '') )+1;

533b6a3c152fa8a224724622fbbb7b05.png

-------------------------------------------------------------------------------------

还有如果有多行,可以使用循环:

CREATE TABLE Data_CF(ID NUMBER,Colname VARCHAR2(2000));

------------

DECLARE

D_Col VARCHAR2(2000);

D_NUM NUMBER;

D_I NUMBER;

D_ID NUMBER;

BEGIN

FOR V IN(SELECT bsm,qlrmc FROM bdcdj.qlr WHERE qlrmc LIKE'%,%') LOOP

D_NUM:=LENGTH(v.qlrmc)-LENGTH(regexp_replace(v.qlrmc,',',''))+1;

D_I:=1;

D_ID:=v.bsm;

WHILE D_I<=D_NUM LOOP

SELECT regexp_substr(V.qlrmc,'[^,]+',1,D_I) INTO D_col FROM dual;

INSERT INTO Data_CF(ID,Colname)

values(D_ID,D_col);

D_I:=D_I+1;

END LOOP;

END LOOP;

END;

---

SELECT * FROM Data_CF ORDER BY ID;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值