1

我想将所有“文本”行“连接”成一行,结果得到一行。这甚至可能吗?我使用 MSSQL Server 2005。

询问

4

3 回答 3

2

我相信你正在寻找这样的东西:

DECLARE @string nvarchar(max)
SET @string = N''

SELECT @string = @string + [Text] + N' ' FROM [YourTable]

SELECT @string

这会将 [Text] 列的所有值连接到一个变量中。然后,您可以选择变量以检索单行中的所有值。

于 2010-10-04T14:41:32.483 回答
2

使用 FOR XML 路径:

SELECT [Text]+' ' AS 'text()' FROM _table FOR XML PATH('')

另一种选择 - 使用字符串连接:

DECLARE @s nvarchar(max)
SELECT @s = ISNULL(@s, '') + t + ' '  FROM _table OPTION (MAXDOP 1)
SELECT @s

请注意,后一个不能保证工作,afaik,正式的“@s = @s + ...”对于多行结果集的行为是未定义的。
MAXDOP 1此处使用提示来防止优化器创建并行执行计划,因为这肯定会产生不正确的结果。

于 2010-10-04T14:45:09.770 回答
0

就像是:

DECLARE @result varchar(max)

SELECT @result = COALESCE(@result + ' ','') +[Text] FROM [Table]
SELECT @result
于 2010-10-04T14:42:19.883 回答