拆分split逗号间隔的表字段数据
--建表
create table test(id int,str varchar2(100))
--加入数据
select * from test
id str
1 2,4
2 4
3 2,8,2
--要求最终得到如下结果:
id str
1 2
1 4
2 4
3 2
3 8
3 2
--脚本如下(这里需要加上level,否则会把拆分后的数据去重):
SELECT distinct id,REGEXP_SUBSTR (str,'[^,]+',1,LEVEL) as "str",level
FROM TEST
CONNECT BY REGEXP_SUBSTR (str,'[^,]+',1,LEVEL) IS NOT NULL
order by id,level;
--查询结果:
ID str LEVEL
1 2 1
1 4 2
2 4 1
3 2 1
3 8 2
3 2 3
问题得解,又学会了一个用法