有这样的数据
编号   组合
0001   02/0304/0203/01/
0002    0405/0312/43/957623/
我要得到这样的结果
0001   02
0001   0304
0001   0203
0001   01
等等类似。
不知道我讲清楚了没,在线等

解决方案 »

  1.   

    if object_id('[TB]') is not null drop table [TB]
    go
    create table [TB] (编号 nvarchar(8),组合 nvarchar(40))
    insert into [TB]
    select '0001','02/0304/0203/01/' union all
    select '0002','0405/0312/43/957623/'select * from [TB]
    select 
        a.编号,b.组合
    from 
        (select 编号,组合=convert(xml,'<root><v>'+replace(组合,'/','</v><v>')+'</v></root>') from TB)a
    outer apply
        (select 组合=C.v.value('.','nvarchar(100)') from a.组合.nodes('/root/v')C(v))b
    /*
    编号 组合
    0001 02
    0001 0304
    0001 0203
    0001 01
    0001
    0002 0405
    0002 0312
    0002 43
    0002 957623
    0002 */
      

  2.   

    学习了,
      后面再加个where条件<>''就可以了
      

  3.   

    就是outer apply 
    后面这个有点看不懂
      

  4.   


    后面是针对xml文件的处理方法,lz可以参考msdn看看。
    实在麻烦,lz可以使用通用的方法Select
        a.编号,COl2=substring(a.组合,b.number,charindex('/',a.组合+'/',b.number)-b.number) 
    from 
        TB a join master..spt_values  b 
        ON B.type='p' AND B.number BETWEEN 1 AND LEN(A.组合)
    where
         substring('/'+a.组合,b.number,1)='/'