热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

各位高手:比如说selecttop10namefromemployee,结果是10行,怎样让结果只有一行,这10个name用逗号隔开啊?
各位高手:比如说select top 10 name from employee,结果是10行,怎样让结果只有一行,这10个name用逗号隔开啊?

7 个解决方案

#1


select top 10 name+',' from employee for xml path('')

#2


declare @s varchar(100)
select top 10 @s=isnull(@s,'')+name from employee
select @s

#3


----------------------------------------------------
/*如何将一列中所有的值一行显示
数据源
  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


-------------

#4


简单方法不知道,用存储过程慢慢分析吧。

#5


declare @s varchar(100)
select top 10 @s=isnull(@s+',','')+name from employee
select @s

#6


使用前考虑一下问题:
1、一楼的方法需要 sqlserver 2005(含)以上版本;
2、如果用其他朋友的方法,执行动态sql字符串,字符串变量是有最大长度;
3、可以使用建立临时表的方法,可以使用游标或者update等;

个人认为,一般的,1、2就够用了;

#7


引用 1 楼 l3143344 的回复:
select top 10 name+',' from employee for xml path('')
简单可行

推荐阅读
author-avatar
仰望天空TL
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有