表 EMAIL 字段 RECEIVER ,RECEIVER 字段里有多个数据,想把这些数据分开显示,如下:当前字段内容如下:
RECEIVER
10,20,11
33
22,10
24
14,11需要实现的结果:
RECEIVER
10
20
11
33
22
10
24
14
11有大大能指导一下吗?

解决方案 »

  1.   

    http://blog.csdn.net/htl258/archive/2010/04/28/5537235.aspx
      

  2.   

    多种拆分列值的方法:http://blog.csdn.net/htl258/archive/2009/09/09/4533846.aspx
      

  3.   

    --> 生成测试数据表: [tb]
    IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([RECEIVER] [nvarchar](10))
    INSERT INTO [tb]
    SELECT '10,20,11' UNION ALL
    SELECT '33' UNION ALL
    SELECT '22,10' UNION ALL
    SELECT '24' UNION ALL
    SELECT '14,11'--SELECT * FROM [tb]-->SQL查询如下:
    SELECT b.[RECEIVER]
    FROM (
        SELECT [RECEIVER]=CAST('<v>'+REPLACE([RECEIVER],',','</v><v>')+'</v>' AS XML)
        FROM tb 
    ) AS a 
        OUTER APPLY (
           SELECT C.value('.','varchar(50)') AS [RECEIVER] 
           FROM a.[RECEIVER].nodes('/v') AS T(C)
        ) AS b
    /*
    RECEIVER
    --------------------------------------------------
    10
    20
    11
    33
    22
    10
    24
    14
    11(9 行受影响)
    */
      

  4.   


    create table tb(col varchar(10))
    insert into tb
    select 'aa,bb,cc' union all
    select 'aa,bb' union all
    select 'aa'select 
        a.col
        ,[splt_char] = substring(a.col,b.number,charindex(',',a.col+',',b.number)-b.number)
    from tb a
    inner join master..spt_values b
    on charindex(',',','+a.col,b.number) = b.number 
    and b.[type] = 'P'--结果
    /*
    aa,bb,cc aa
    aa,bb,cc bb
    aa,bb,cc cc
    aa,bb     aa
    aa,bb     bb
    aa         aa
    */
      

  5.   

    IF OBJECT_ID('[tb]') IS NOT NULL
        DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([RECEIVER] [nvarchar](100))
    INSERT INTO [tb]
    SELECT '10,20,11' UNION ALL
    SELECT '33' UNION ALL
    SELECT '22,10' UNION ALL
    SELECT '24' UNION ALL
    SELECT '14,11'
    go
    Select
       COl=substring(A.[RECEIVER],b.number,charindex(',',A.[RECEIVER]+',',b.number)-b.number) 
    from 
        Tb A join master..spt_values  B
        ON B.type='p' AND B.number BETWEEN 1 AND LEN(A.[RECEIVER])
    where
         substring(','+A.[RECEIVER],B.number,1)=','
    /*
    COl2
    ----------------------------------------------------------------------------------------------------
    10
    20
    11
    33
    22
    10
    24
    14
    11*/