首页 电脑 电脑学堂 查看内容

把某一列值转换为逗号分隔字符串

2012-3-29 10:33 584 0

摘要: 问题是这样的。从订阅表中SELECT某一个用户所有订阅的目录,然后可以绑定至前台显示给用户,让用户知道自己有哪些订阅和哪些目录没有订阅。 如下表[dbo].[SubScription]: ...
关键词: nbsp SubscriptionCata UsersId SubScription 订阅 用户 SELECT 目录 NVARCHAR PATH

问题是这样的。从订阅表中SELECT某一个用户所有订阅的目录,然后可以绑定至前台显示给用户,让用户知道自己有哪些订阅和哪些目录没有订阅。 如下表[dbo].[SubScription]:    需要SELECT用户ID为15的所有订阅目录。如最终结果:    Insus.NET是在SQL Server 2012结合XML的FOR XML PATH()来实现。参考:   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 www.2cto.com 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这个函数,是为了截除第一个逗号。         作者 Insus.NET
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部