【发布时间】:2008-11-17 13:40:06
【问题描述】:
我在存储过程中的 MS-SQL 中有一个结果集,可以说它有一个 VARCHAR 列,但有很多行。我想创建一个包含所有这些值的逗号分隔字符串,有没有一种简单的方法可以做到这一点,还是我必须逐步检查每个结果并手动构建字符串?
我最好在存储过程本身中执行此操作。
【问题讨论】:
我在存储过程中的 MS-SQL 中有一个结果集,可以说它有一个 VARCHAR 列,但有很多行。我想创建一个包含所有这些值的逗号分隔字符串,有没有一种简单的方法可以做到这一点,还是我必须逐步检查每个结果并手动构建字符串?
我最好在存储过程本身中执行此操作。
【问题讨论】:
这是一种方法(使用 AdventureWorks2008 DB):
DECLARE @name varchar(255)
SET @name = NULL
select @Name = COALESCE(@Name + ',','') + LastName from Person.Person
Select @name
这是另一个(SQL 2005 以后的版本):
SELECT
LastName + ','
FROM
Person.Person
FOR XML PATH('')
在这两种情况下,您都需要删除结尾的逗号“,”(可以使用 STUFF() 函数)
【讨论】:
这个问题已经被问过好几次了:
【讨论】: