如果把查询到的结果集连接起来?:
比如 SELECT ID FROM T 查询到的结果是
1
2
3
4
5
6
....怎么才能得到结果是一个字符串
1,2,3,4,5,6,....不想用游标去一次次组合字符串,效果太低了。能不能通过一条语句直接得到??

解决方案 »

  1.   

    DECLARE @STR VARCHAR(8000)
    SELECT @STR=ISNULL(@STR+',','')+字段名 FROM 表名
    SELECT @STR
      

  2.   

    declare @s varchar(100)
    select @s=ISNULL(@s+',','')+RTRIM(ID) 
    from (select ID from T) k
    select @s
      

  3.   

    DECLARE @STR VARCHAR(20)
    SELECT @STR=ISNULL(@STR+',','')+LTIRM(ID) FROM TB
    SELECT @STR
      

  4.   

    DECLARE @STR VARCHAR(20)
    SELECT @STR=ISNULL(@STR+',','')+LTRIM(ID) FROM TB
    SELECT @STR
      

  5.   

    貌似遇到null会出错在 烤鸭的基础上 补充了一点DECLARE @STR VARCHAR(8000)
    SELECT @STR=ISNULL(@STR+',','')+(case when len(字段名)>0  then 字段名 else '' end) FROM 表名
    SELECT @STR
      

  6.   

    谢谢旦旦提醒,看LZ的需求吧,如果不想要空字符串可以在FROM 后面加个WHERE 字段名 <>''
      

  7.   

    ....
    楼主的结果集显然没NUll
      

  8.   


    if object_id('a') is not null
    drop table a
    go
    create table a(id int)
    go
    insert into a
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 SELECT top 1
        remak =STUFF((SELECT ','+ltrim(id) FROM a FOR XML PATH('')),1,1,'')
    FROM a ====================================
    re
    ----------
    1,2,3,4,5,6
      

  9.   

    if object_id('tb') is not null
    drop table tb
    go
    create table tb(id int)
    insert into tb
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 DECLARE @STR VARCHAR(8000)
    SELECT @STR=ISNULL(@STR+',','')+cast(id as varchar) FROM tb
    SELECT @STR