如何连接一列的所有条目 [SQL]
How to concat all the entries of one column [SQL]
如标题所述,使用以下 SQL 查询:
SELECT "Name"
FROM "ExampleTable"
我得到以下结果:
Name
----------------
ExampleName1
ExampleName2
ExampleName3
问题:如何修改查询,使所有的名字都显示在一行中,以便以后使用数组。
我试过的方法: FOR XML
、STUFF
- 不起作用
预期结果:
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 和自动增量设置,如下所示:
接下来在其中输入一些虚拟值
终于写下我们的查询了。
如标题所述,使用以下 SQL 查询:
SELECT "Name"
FROM "ExampleTable"
我得到以下结果:
Name
----------------
ExampleName1
ExampleName2
ExampleName3
问题:如何修改查询,使所有的名字都显示在一行中,以便以后使用数组。
我试过的方法: FOR XML
、STUFF
- 不起作用
预期结果:
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 和自动增量设置,如下所示:
接下来在其中输入一些虚拟值
终于写下我们的查询了。