Sql server 2005 将列的所有行转换为逗号分隔的值

Sql server 2005 将列的所有行转换为逗号分隔的值,sql-server-2005,Sql Server 2005,我在SQLServer2005中有一个具有这种结构的表 TABLE TPilot ( Num_Office char(3) NULL, AppID char(3) NULL ) 表中大约有998条记录,其“Num_Office”值从2到999。 我想用逗号分隔的值(如2,3,4,5..999)获取一行中的所有office值 下面是我现在使用的查询- select stuff((select ','+ Num_Office from TPilot for xml path('')

我在SQLServer2005中有一个具有这种结构的表

TABLE TPilot
(
    Num_Office char(3) NULL,
    AppID char(3) NULL
)
表中大约有998条记录,其“Num_Office”值从2到999。 我想用逗号分隔的值(如2,3,4,5..999)获取一行中的所有office值

下面是我现在使用的查询-

select stuff((select ','+ Num_Office from TPilot for xml path('')),1,1,'')
这里的问题是它没有返回所有的行值。它只返回大约65行

2  ,3  ,4  ,5  ,6  ,7  ,8  ,9  ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,

请指出我在这里缺少的内容。

这应该可以解决您的问题。

create table #Num_Office (Num_Office char(3),APPID CHAR(3))

insert into #Num_Office (Num_Office,APPID) values ('1',1)
insert into #Num_Office (Num_Office,APPID) values ('2',1)
insert into #Num_Office (Num_Office,APPID) values ('3',1)
-- ADD YOUR ROWS AS PER NEED ...

declare @tmp varchar(250)
SET @tmp = ''
select @tmp = @tmp + Num_Office + ', ' from #Num_Office

select SUBSTRING(@tmp, 0, LEN(@tmp))

DROP TABLE #Num_Office

这是你的SSM的一个显示问题-它在250个字符处被截断。非常感谢。这真的很有帮助,否则我真的很困惑到底发生了什么。当我在SSMS之外的storedproc中执行相同的查询时,我可以看到整个字符串。顺便问一下,在SSMS中是否有任何可用的设置,通过这些设置,我可以禁用此功能,并删除250个字符?是的,它应该位于工具选项查询结果中。检查网格和文本输出,但有一个设置限制了您可以返回的内容