select name from user where id in(1,2,3,4,5)
查询出来的结果是5条纪录,分别是
a
b
c
d
e
我想让查询结果以a,b,c,d,e这样的格式显示请问怎么搞?in()里面的id号是已参数的形式传进来的。所以查询出来的结果也是不固定,我这里只是举个有5条纪录的例子

解决方案 »

  1.   

    declare @str varchar(1000)
    set @str = ''
    select @str = name+',' from user where id in(1,2,3,4,5)
    set @str=left(@str,len(@sql)-1)
    print @str
      

  2.   

    select id = 1 ,name into #t from user where id in(1,2,3,4,5........更多)--1.创建一个合并的函数   
      create   function   fmerg(@id   int)   
      returns   varchar(8000)   
      as   
      begin   
      declare   @str   varchar(8000)   
      set   @str=''   
      select   @str=@str+','+cast(id   as   varchar)   from   #t   where   id=@id   
      set   @str=right(@str,len(@str)-1)   
      return(@str)   
      End   
      go   
        
      --调用自定义函数得到结果   
      select   distinct   id,dbo.fmerg(id)   from   #t
      

  3.   

    declare @str varchar(1000)
    set @str = ''
    select @str = name+',' from user where id in(1,2,3,4,5)
    set @str=left(@str,len(@sql)-1)
    print @str
    ========================
    错的
      

  4.   

    xmlquit(下輩子再也不玩電腦) 
    ===============
    你的太复杂了,有没有简单点的
      

  5.   

    ---也可以不用临时表直接查
    如果ID 为  Int类型
    ------创建函数
    Create Function dbo.Fn_MergeT(@MinID int,@MaxID int)
       Returns Varchar(8000)
    As
       Begin
          Declare @sql Varchar(8000)
          Set @sql='' 
          While
             @MinID<=@MaxID
             Begin
                Select @sql=@sql+','+ Name From [User] Where ID=@MinID
                Select @MinID=@MinID+1
             End
          Return Stuff(@sql,1,1,'')
       End
    Go ----查询结果
    Select DisTinct dbo.Fn_MergeT(1,5) As Name From [User]
      

  6.   

    ---创建测试数据
    Create Table [User](ID int,Name Varchar(10))
      Insert [User] Select 1,'a'
      Union All Select 2,'b'
      Union All Select 3,'c'
      Union All Select 4,'d'
      Union All Select 5,'e'
      Union All Select 6,'f'
      Union All Select 7,'g'
    ---查询测试数据
    Select * From [User]
    ---创建函数
    Create Function dbo.Fn_MergeT(@MinID int,@MaxID int)
       Returns Varchar(8000)
    As
       Begin
          Declare @sql Varchar(8000)
          Set @sql='' 
          While
             @MinID<=@MaxID
             Begin
                Select @sql=@sql+','+ Name From [User] Where ID=@MinID
                Select @MinID=@MinID+1
             End
          Return Stuff(@sql,1,1,'')
       End
    Go 
    ---调用函数查询结果
    Select DisTinct dbo.Fn_MergeT(1,5) As Name From [User]/*
    Name              
    ---------------------
    a,b,c,d,e(所影响的行数为 1 行)
    */
      

  7.   

    SoftwKLC(自由的飞鸟) ( ) 信誉:100 
    ======================
    我传进来的id 没有规律的
      

  8.   

    Try:
    Declare @Str Varchar(8000)
      Set @Str=''
      Select @Str=@Str+','+Name From [User] Where ID In(2,3,6) ---没有规律的ID
      Set @Str=Stuff(@Str,1,1,'')
    Select @Str As Name
    /*
    Name                  
    ----------------------
    b,c,f(所影响的行数为 1 行)
    */
      

  9.   

    ---不知道你的参数是怎么传的
    ---Try:
    Declare @Str Varchar(8000)
    Declare @ID1 int,@ID2 int,@ID3 int,@ID4 int
      Select @ID1=2,@ID2=3,@ID3=6,@ID4=7
      Set @Str=''
      Select @Str=@Str+','+Name From [User] Where ID In(@ID1,@ID2,@ID3,@ID4) ---参数
      Set @Str=Stuff(@Str,1,1,'')
    Select @Str As Name
    ---结果
    /*
    Name                 
    ---------------------
    b,c,f,g(所影响的行数为 1 行)
    */