sqlserver如何选取出用逗号隔开的结果

dongjunhui2010 2011-07-14 01:23:27
各位高手:比如说select top 10 name from employee,结果是10行,怎样让结果只有一行,这10个name用逗号隔开啊?
...全文
333 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuexiaodong2009 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 l3143344 的回复:]

select top 10 name+',' from employee for xml path('')
[/Quote]简单可行
fancy0109 2011-07-14
  • 打赏
  • 举报
回复
使用前考虑一下问题:
1、一楼的方法需要 sqlserver 2005(含)以上版本;
2、如果用其他朋友的方法,执行动态sql字符串,字符串变量是有最大长度;
3、可以使用建立临时表的方法,可以使用游标或者update等;

个人认为,一般的,1、2就够用了;
cd731107 2011-07-14
  • 打赏
  • 举报
回复
declare @s varchar(100)
select top 10 @s=isnull(@s+',','')+name from employee
select @s
~在路上~ 2011-07-14
  • 打赏
  • 举报
回复
简单方法不知道,用存储过程慢慢分析吧。
--小F-- 2011-07-14
  • 打赏
  • 举报
回复
----------------------------------------------------
/*如何将一列中所有的值一行显示
数据源
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
*/

---方法三
declare @s varchar(1000)
select @s=isnull(@s+',' , '')+col from tb
select @s
/*
a,b,c,d,e
*/

drop table tb


-------------
百年树人 2011-07-14
  • 打赏
  • 举报
回复
declare @s varchar(100)
select top 10 @s=isnull(@s,'')+name from employee
select @s
l3143344 2011-07-14
  • 打赏
  • 举报
回复
select top 10 name+',' from employee for xml path('')

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧