SQL Server 2000中有Implode类型的函数吗?

问题描述 投票:0回答:2

SQL Server有Implode类型的函数吗?

我有一个列表(在 SQL Server 表中):

 Apple
 Orange
 Pear
 Blueberry

我希望他们能成为

 Apple, Orange, Pear, Blueberry

我希望空格和逗号是可配置的,但如果不是,我可以随时替换它。

sql-server t-sql sql-server-2000
2个回答
10
投票

SO 上已经有一些与此相关的问题(搜索 PIVOT 或 UNPIVOT 或 GROUP_CONCAT),但是针对您所述问题的 SQL Server 的简单解决方案(使用变量连接的技巧):

DECLARE @str AS varchar(MAX)
DECLARE @separator AS varchar(50)
SET @separator = ', ' -- Here's your configurable version

SELECT @str = COALESCE(@str + @separator, '') + <column_name>
FROM <table_name>
ORDER BY <sort_order>

当然,如果每行都需要这样做,您可以使用 UDF 或“非常酷的 FOR XML”技巧


2
投票

SELECT ', ' + <column_name> FROM <table_name> ORDER BY <sort_order> FOR XML PATH('')

这将为您提供开头带有“,”的列表,以及删除该列表的最快方法
就是用东西


SELECT STUFF(( SELECT ', ' + <column_name> FROM <table_name> ORDER BY <sort_order> FOR XML PATH('') ),1,2,'')

© www.soinside.com 2019 - 2024. All rights reserved.