CREATE TABLE #T(Cname VARCHAR(100),Cvalue varchar(100))
insert into #T select 'A:B:C:D:E:F:G','1:0:1:0:1:0:1'
insert into #T select 'A:B:C:D:E:F:G','1:1:1:0:0:1:1'
insert into #T select 'A:B:C:D:E:F:G','1:0:0:0:1:1:0'
insert into #T select 'A:B:C:D:E:F:G','1:1:1:0:1:0:1'
insert into #T select 'A:B:C:D:E:F:G','1:0:1:0:1:0:0'
insert into #T select 'A:B:C:D:E:F:G','0:0:1:0:1:0:0'
insert into #T select 'A:B:C:D:E:F:G','1:0:1:0:1:0:0'
要求结果:
A B C D E F G
1 0 1 0 1 0 1
1 1 1 0 0 1 1
1 0 0 0 1 1 0
1 1 1 0 1 0 1
1 0 1 0 1 0 0
0 0 1 0 1 0 0
1 0 1 0 1 0 0

解决方案 »

  1.   

    是要查询结果显示这样么?如果是那就用Spler
      

  2.   


    显示结果:分拆为A-G列
    A B C D E F G
    ---------------
    1 0 1 0 1 0 1
    1 1 1 0 0 1 1
    1 0 0 0 1 1 0
    1 1 1 0 1 0 1
    1 0 1 0 1 0 0
    0 0 1 0 1 0 0
    1 0 1 0 1 0 0不明白你的Spler
      

  3.   

    楼主是要在SQL语句中实现,还是在程序中?
      

  4.   


    //通过函数
    alter FUNCTION [dbo].[f_splitS](
    @s   varchar(8000),   --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )returns varchar(100)
    AS
    BEGIN
     DECLARE @res varchar(100)
     DECLARE @splitlen int
     set @res=''
     SET @splitlen=LEN(@split+'a')-2
     WHILE CHARINDEX(@split,@s)>0
     BEGIN
    set @res+='  '+LEFT(@s,CHARINDEX(@split,@s)-1)
      SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
     END
     return @res
    END
    select  dbo.f_splitS('A:B:C:D:E:F:G',':') 
    union select  dbo.f_splitS('1:0:1:0:1:0:1',':')
    。楼主是一定要拆成列吗?如果只是要这种形式,这个方法可以
      

  5.   

    select 
        cast(parseName(replace(Cname ,':','.'),3) as varchar(10)) Cname1,
        cast(parseName(replace(Cname ,':','.'),2) as varchar(10)) Cname2
    from
       #T
    charindex分割字符串