SQL Server拿某某平列值转换为逗号分隔字符串

题材是这般的。从订阅表中SELECT某一个用户所有订阅的目,然后可以绑定至前台显示为用户,让用户了解好出哪些订阅和怎么目录没有订阅。

如下表[dbo].[SubScription]:

 

消SELECT用户ID为15之保有订阅目录。如最终结出:

 

Insus.NET是在SQL Server
2012结合XML的FOR
XML PATH()来实现。参考:

View Code

SELECT [UsersId], [SubscriptionCataLog] = STUFF((SELECT ‘,’ + CAST([SubscriptionCatalog_nbr] AS NVARCHAR(MAX))  
FROM [dbo].[SubScription] WHERE ([UsersId] = s.[UsersId])
FOR XML PATH (”)),1,1,”)
FROM [dbo].[SubScription] s
WHERE [usersId] = 15
GROUP BY [UsersId] 

 

率先是当数量表FROM [dbo].[SubScription],条件为WHERE [usersId] =
15了滤出用户所有订阅目录,并分组GROUP BY [UsersId]

然后把[SubscriptionCatalog_nbr]鉴于整型转为字符串:CAST([SubscriptionCatalog_nbr] AS
NVARCHAR(MAX)

再用’,’与之差并起来,最后所以FOR XML PATH (”)方法,把每一行数出错连接于。

详尽一些,可以见到:

SELECT ‘,’ + CAST([SubscriptionCatalog_nbr] AS NVARCHAR(MAX))  
FROM [dbo].[SubScription]
FOR XML PATH (”)

 

实施得的结果:

 

STUFF这个函数,是为截除第一独逗号。

 

 

相关文章