一个查询(SELECT/FUNCTION/VIEW/PROCEDURE)返回一个varchar类型的列。我需要将它们全部连接成一个单独的varchar行。在T-SQL中,我应该如何最好地完成这个任务?
declare @s varchar(8000)
select @s = coalesce(@s + ', ' + col, col) from tbl
DECLARE @Concat varchar(MAX)
SELECT @Concat = ''
SELECT @Concat = @ConCat + IsNull(Field1, '')
FROM Table1
SELECT @Concat
这将返回一个单一的值,该值是每个Field1值的串联。IsNull部分意味着NULL值不会使事情混乱。当然,如果您没有使用SQL Server 2005或更高版本,则无法使用varchar(MAX),并且您串联的记录数将更快成为一个问题。
添加逗号分隔符...
DECLARE @Concat VARCHAR(MAX)
SET @Concat = ''
SELECT @Concat = @Concat + LEFT(',', LEN(@Concat)) + ISNULL(Field, '') FROM dbo.Table
SELECT @Concat