暂无图片
如何在 SQL Server 中将多行中的文本连接成单个文本字符串?
我来答
分享
暂无图片 匿名用户
如何在 SQL Server 中将多行中的文本连接成单个文本字符串?

例子:

Peter
Paul
Mary

复制

有没有一种简单的方法可以把它变成一串

Peter, Paul, Mary?

复制
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
cqiwen

SQL Server 2017新增了 string_agg函数,可以轻松实现分组合并字符串,而不是用xml path,或者写个自定义 函数来实现。

语法:
STRING_AGG ( expression, separator ) [ <order_clause> ]
<order_clause> ::=
WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )

有2个参数,第1个是要合并的字段、表达式,第2个是用什么分隔符,比如:用逗号作为分隔符。
后面的order 子句,是对要合并的数据进行排序,可以升序、降序。

例:

create table test2(country varchar(10),city varchar(10));
insert into test2 values ('中国','台北');
insert into test2 values ('中国','香港');
insert into test2 values ('中国','上海');
insert into test2 values ('日本','东京');
insert into test2 values ('日本','大阪');

select * from test2;

COUNTRY    CITY
---------- -------------------
中国       台北
中国       香港
中国       上海
日本       东京
日本       大阪

SELECT
        country,
        STRING_AGG (city, ',') WITHIN GROUP (ORDER BY city) city
FROM test2 GROUP BY country;

COUNTRY    CITY
---------- ---------------------
中国       上海,台北,香港
日本       东京,大阪

复制
暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏