如何在T-SQL中将查询返回的一列所有记录连接成一个varchar字符串?

4

一个查询(SELECT/FUNCTION/VIEW/PROCEDURE)返回一个varchar类型的列。我需要将它们全部连接成一个单独的varchar行。在T-SQL中,我应该如何最好地完成这个任务?

4个回答

6
declare @s varchar(8000)
select @s = coalesce(@s + ', ' + col, col) from tbl

4
DECLARE @Concat varchar(MAX)

SELECT @Concat = ''

SELECT @Concat = @ConCat + IsNull(Field1, '')
FROM Table1

SELECT @Concat

这将返回一个单一的值,该值是每个Field1值的串联。IsNull部分意味着NULL值不会使事情混乱。当然,如果您没有使用SQL Server 2005或更高版本,则无法使用varchar(MAX),并且您串联的记录数将更快成为一个问题。


2

看起来很疯狂,但将来可能会证明有用。 - Ivan

0

添加逗号分隔符...

DECLARE @Concat VARCHAR(MAX)

SET @Concat = ''

SELECT  @Concat = @Concat + LEFT(',', LEN(@Concat)) + ISNULL(Field, '') FROM    dbo.Table

SELECT  @Concat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接