请教sql字符串相加表ID,Name
1  中
2  国
3  人
4  民求一条SQL语句查询出的结果是:中+国+人+民越简单语句越好,千万不要写的太复杂。就一条语句,让SQL输出成上面的结果。
谢谢!

解决方案 »

  1.   

    declare @str varchar(100)
    set @str=''
    select @str=@str+col from table
    print @str
      

  2.   

    declare @tb table(id int identity(1,1) not null,name nvarchar(5))
    insert into @tb values('中'),('国'),('人'),('民')
    declare @str varchar(50)
     set @str=''
    select  @str=@str+'+'+ name from @tb
    select RIGHT(@str,LEN(@str)-1 )
      
    --------------------------------------------------
    中+国+人+民(1 行受影响)
      

  3.   

    ----------------------------------------------------
    /*如何将一列中所有的值一行显示
    数据源
      a
      b
      c
      d
      e
    结果
    a,b,c,d,e
    */create table tb(col varchar(20))
    insert tb values ('a')
    insert tb values ('b')
    insert tb values ('c')
    insert tb values ('d')
    insert tb values ('e')
    go--方法一
    declare @sql varchar(1000)
    set @sql = ''
    select @sql = @sql + t.col + ',' from (select col from tb) as t
    set @sql='select result = ''' + left(@sql , len(@sql) - 1) + ''''
    exec(@sql)
    /*
    result     
    ---------- 
    a,b,c,d,e,
    */--方法二
    declare @output varchar(8000)
    select @output = coalesce(@output + ',' , '') + col from tb
    print @output
    /*
    a,b,c,d,e
    */drop table tb
      

  4.   


    WITH #001
    AS(
    SELECT 1 AS id,'中' AS id_name 
    UNION ALL
    SELECT 2 AS id,'国' AS id_name 
    UNION ALL
    SELECT 3 AS id,'人' AS id_name 
    UNION ALL
    SELECT 4 AS id,'民' AS id_name 
    )SELECT [拼接] = STUFF(( SELECT   '+' + [id_name] 
                           FROM     #001 ORDER BY id 
                         FOR
                           XML PATH('')
                         ), 1, 1, '')  --输出:拼接中+国+人+民(1 行受影响)
      

  5.   


    WITH #001
    AS(
    SELECT 1 AS id,'中' AS id_name 
    UNION ALL
    SELECT 2 AS id,'国' AS id_name 
    UNION ALL
    SELECT 3 AS id,'人' AS id_name 
    UNION ALL
    SELECT 4 AS id,'民' AS id_name 
    )SELECT [拼接] = STUFF(( SELECT   '+' + [id_name] 
                           FROM     #001 ORDER BY id 
                         FOR
                           XML PATH('')
                         ), 1, 1, '')  --结果:
    拼接
    中+国+人+民(1 行受影响)
      

  6.   

    declare @tb table(id int identity(1,1) not null,name nvarchar(5))
    insert into @tb values('中'),('国'),('人'),('民')
    declare @str varchar(50)
     set @str=''
    select  @str=@str+'+'+ name from @tb
    select RIGHT(@str,LEN(@str)-1 )
      
    --------------------------------------------------
    中+国+人+民(1 行受影响)
      

  7.   

    7楼8楼的方法不好,如果数据库中有1万条记录,那我SQL语句写多长啊。不科学
      

  8.   

    5楼的这个方法好,但是
    declare @output varchar(8000)
    select @output = coalesce(@output + ',' , '') + col from tb
    print @output
    输出,为什么是打印输出,有方法,在表格中输出吗?
      

  9.   

    类似于 
    select 列1 as a from 表格这样的输出方法吗?
      

  10.   


    --> 测试数据:[tbl]
    if object_id('[tbl]') is not null drop table [tbl]
    create table [tbl]([ID] int,[Name] varchar(2))
    insert [tbl]
    select 1,'中' union all
    select 2,'国' union all
    select 3,'人' union all
    select 4,'民'declare @str varchar(100)
    set @str=''
    select @str=@str+[Name] from [tbl]
    set @str='select 字段名='+quotename(@str,'''')
    exec(@str)字段名
    中国人民
      

  11.   

    有方法,查询其他字段吗?
    比如和  GROUP BY 一起使用。
      

  12.   

    SELECT [拼接] = STUFF(( SELECT   '+' + [id_name] 
                           FROM     #001 ORDER BY id 
                         FOR
                           XML PATH('')
                         ), 1, 1, '')  
    你就算有1W记录,也是这一句 语句就可以呀,不用写其他的撒,他自动id_name列下的所有记录相“+”
      

  13.   

    SELECT [拼接] = STUFF(( SELECT   '+' + [id_name] 
                           FROM     #001 ORDER BY id 
                         FOR
                           XML PATH('')
                         ), 1, 1, '')  
    你10W条记录也就是这条语句