拆分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

问题得解,又学会了一个用法

posted on 2016-06-21 17:36  非客  阅读(1414)  评论(0编辑  收藏  举报

导航