读书人

[]DB2 用SQL将一条数据中用逗号隔开的

发布时间: 2013-01-18 10:22:42 作者: rapoo

[求助]DB2 用SQL将一条数据中用逗号隔开的字段分成多条记录
各位大神好,
小弟遇到一个问题,DB2中如何用。SQL将一条数据中用逗号隔开的字段分成多条记录。
示例如下,
seq(integer) test(varchar) customer(varchar) cinvcode(varchar) ……
1 a 4 2
2 a,b 3 2
3 a,b,c 6 1
4 b,c,d,e,f 1 5

期望结果,
seq(integer) test(varchar) customer(varchar) cinvcode(varchar) ……
1 a 4 2
2 a 3 2
2 b 3 2
3 a 6 1
3 b 6 1
3 c 6 1
4 b 1 5
4 c 1 5
4 d 1 5


4 e 1 5
4 f 1 5

需要转换的数据量非常大,请各位高人给小弟些指点,不胜感激。
[解决办法]
示例:
with n(str, ori, pos) as (

values ('abc,bc,cd,d,ff,', 1, posstr('abc,bc,cd,d,ff,', ','))

union all

select str, pos+1, locate(',', str, pos+1)

from n

where locate(',', str, pos+1)>0)

select str, ori, pos, substr(str, ori, pos-ori) as result from n

读书人网 >IBM DB2

热点推荐