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条纪录的例子
查询出来的结果是5条纪录,分别是
a
b
c
d
e
我想让查询结果以a,b,c,d,e这样的格式显示请问怎么搞?in()里面的id号是已参数的形式传进来的。所以查询出来的结果也是不固定,我这里只是举个有5条纪录的例子
set @str = ''
select @str = name+',' from user where id in(1,2,3,4,5)
set @str=left(@str,len(@sql)-1)
print @str
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
set @str = ''
select @str = name+',' from user where id in(1,2,3,4,5)
set @str=left(@str,len(@sql)-1)
print @str
========================
错的
===============
你的太复杂了,有没有简单点的
如果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]
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 行)
*/
======================
我传进来的id 没有规律的
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 行)
*/
---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 行)
*/