我表test里有3列数据
hm       group_no     xghm
----------------------------------
23           12               34,56,678,89
45           78                ,12,44,34
78           99                , ,33,67
..............
也就是说 xghm列数据是用逗号分隔的,我现在想把xghm列数据分开,转成一行一行的,需要说明的是xghm列不同行长度不一样,逗号个数也不一样,请问如何用sql语句实现?!
转换后结果如下:
hm       group_no     xghm
----------------------------------
23           12               34
23           12               56
23           12               678
23           12               89
45           78               
45           78               12
45           78               44
45           78               34
78           99                
78           99                
78           99                33
78           99                67
...............

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/5111/5111737.xml?temp=.4399835
      

  2.   

    谢谢Eric_1999,你那个代码是把结果显示出来,我想问下如何把结果写到相应的表(譬如test表)里去?
      

  3.   

    上面问题基本解决了,但如果再增加点要求的话,怎么实现?
    如:我表test里有3列数据
    hm       group_no     xghm
    ----------------------------------
    23           12               34,56,678,89
    45           78                ,12,44,34
    78           99                , ,33,67
    ..............
    也就是说 xghm列数据是用逗号分隔的,我现在想把xghm列数据分开,转成一行一行的,需要说明的是xghm列不同行长度不一样,逗号个数也不一样,同时,对逗号拆分的行数据再增加一列表示逗号顺序号的字段,并表示出来,请问如何用sql语句实现?!
    转换后结果如下:
    hm       group_no     xghm                   no
    -----------------------------------------------
    23           12               34              1
    23           12               56              2
    23           12               678             3 
    23           12               89              4
    45           78                               1
    45           78               12              2 
    45           78               44              3
    45           78               34              4
    78           99                               1
    78           99                               2 
    78           99                33             3
    78           99                67             4 
    ..................................