如何连接一列的所有条目 [SQL]

How to concat all the entries of one column [SQL]

如标题所述,使用以下 SQL 查询:

SELECT "Name"
FROM "ExampleTable"

我得到以下结果:

Name
----------------
ExampleName1
ExampleName2
ExampleName3

问题:如何修改查询,使所有的名字都显示在一行中,以便以后使用数组。

我试过的方法: FOR XMLSTUFF - 不起作用

预期结果:

Name: ExampleName1, ExampleName2, ExampleName3.

如果您使用的是 SQL 服务器,您可以试试这个:

Select SUBSTRING( 
( 
     SELECT ',' + Name AS 'data()'
         FROM TableName FOR XML PATH('') 
), 2 , 1000) As Names

在 Fiddle 上查看:http://sqlfiddle.com/#!18/6ab0b3/6

或者可能是使用 COALESCE 的一种简单方法,它根据传递的参数将多行组合成一行,用逗号分隔值分隔:

Declare @val Varchar(MAX); 
Select @val = COALESCE(@val + ', ' + Name, Name) 
        From TableName Select @val;

select @val; // this will show all your data

在 fiddle 上查看:http://sqlfiddle.com/#!18/36112/2

此外,我提供了屏幕截图,以便您在上述屏幕截图出现问题时轻松理解步骤。

请注意:在上面的过程中,我既没有取任何PRIMARY KEY也没有设置它的auto-increment,但在接下来的解释中我使用了PRIMARY KEY,因为我在 SSMS 中编写了所有内容(Sql Server Management Studio)

这是示例 tblStudent table 的架构,其中设置了 PRIMARY KEY 和自动增量设置,如下所示:

接下来在其中输入一些虚拟值

终于写下我们的查询了。