Asp.net 在T-SQL中将多行字段连接到一列中
我正在编写一个SQL查询,在该查询中,我需要对一个表执行子选择,该表通常会返回多行。我需要能够将所有行中某个字段的结果合并到一个字段中进行输出。这有可能吗?怎么可能 例如,如果SQL查询返回Asp.net 在T-SQL中将多行字段连接到一列中,asp.net,sql,tsql,Asp.net,Sql,Tsql,我正在编写一个SQL查询,在该查询中,我需要对一个表执行子选择,该表通常会返回多行。我需要能够将所有行中某个字段的结果合并到一个字段中进行输出。这有可能吗?怎么可能 例如,如果SQL查询返回 id | field 1 | test1 2 | test2 3 | test3 我需要输出的字段是test1 test2 test3。 谢谢 SQLCLR自定义聚合器是另一种更好的读取解决方案,可以使用光标 declare @field nvarchar(max) declare @concat
id | field
1 | test1
2 | test2
3 | test3
我需要输出的字段是test1 test2 test3。
谢谢
SQLCLR自定义聚合器是另一种更好的读取解决方案,可以使用光标
declare @field nvarchar(max)
declare @concat nvarchar(max)
set @concat = ''
declare @cursor cursor
set @cursor = cursor for select field from table
open @cursor
fetch next from @cursor into @field
while @@fetch_status = 0
begin
set @concat = concat(@concat,@field)
fetch next from @cursor into @field
end
您的练习是在连接的字符串之间添加空格:-尝试以下操作:
SELECT RTRIM(field)
FROM (
SELECT field + ' ' field
FROM <YOUR_TABLE>
FOR XML PATH('')
) a
下面是xml实现这一点的诀窍:
SELECT field + ' ' as [text()]
FROM YourTable
FOR XML PATH ('')
这张照片是:
test1 test2 test3
它通常与外部应用程序一起使用,以便对每行执行一次。作为现有答案的补充。尝试使用要使用的列名包含表达式。这样可以避免在连接的字符串中出现空值,并避免列表看起来像这样。请注意多余的空格
field1 field2 field4 field
详情请参阅
这是完全重复的:还有许多其他问题……我想回答者没有读过这篇@gbn:嗯,我读过那篇博文。它没有列出一个成功的长尾答案,我认为它们不存在。在我的机器上,这给出了:没有为“a”的第1列指定列名。更新了帖子以反映指定的列名。您必须将a更改为afield;然后它将打印field1 field2 field3,您可以通过将SELECT field+''字段更改为SELECT field+''作为[text]来修复它
field1 field2 field4 field
GO
DECLARE @tableName VARCHAR(MAX)
SELECT @tableName = COALESCE(@tableName + ' ' ,'') + Name
FROM sys.tables
SELECT @tableName
GO