declare @a varchar(8000)
select @a=''
select @a =@a +名称+',' from yourtable
select @a

解决方案 »

  1.   

    to: lang_ren(浪人) 
    多条语句是肯定可以解决,问题是我这条查询是嵌在一个特复杂的SQL语句里,又不是在存储过程中实现,是写在VB与数据库的连接代码中的.
    表数据:
    序号 名称
    1    CAR
    2    PHONE
    3    BOOK
    :      :
    :      :
    如果能用一条SQL语句改写成以下,应该也能解决:
            1       2       3    ...
    名称   CAR    PHONE   BOOK   ...
      

  2.   

    请问 playyuer(小干部儿),UDF是什么意思?
      

  3.   

    declare @字符 varchar(8000)
    set @字符=''
    select @字符=名称+',' from 表
    select @字符
      

  4.   

    create function getstr()
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+rtrim(名称) from 表
    set @str=right(@str,len(@str)-1)
    return @str
    end
    go-----调用:
    select dbo.getstr() 结果
      

  5.   

    topengdali(大力):
    能不能不用调用别的函数,因为我的SQL语句是在与数据库的连接中用的,而不是在存储过程中写.如果能用一条(就算很复杂)的语句写出来就最好了.
      

  6.   

    你的前台是用query来连接吗??
      

  7.   

    你建立好一次性建好函数后在语句中调用就可以呀!如果你是用bcb,delphi,java等的query的话!你可以这样有个变通的方法:
    以delphi为例:
    query1.add('set nocount on;declare @ varchar(8000);set @='''';select @=@+'','' from 表;select left(@,len(@)-1) 结果');
    query1.open();
      

  8.   

    非常感谢 pengdali(大力) ,我用你提供的方法:
    select dbo.getstr() 
    解决了我的问题.getstr() 作为一个自定义函数.通过调用就OK了.当然,我在函数里提供了其它参数,并对getstr()作了微小的修改.既在set @str=right(@str,len(@str)-1)前面加上了:if @str<>''