匿名用户如何在 SQL Server 中将多行中的文本连接成单个文本字符串?
例子:
Peter
Paul
Mary
有没有一种简单的方法可以把它变成一串
Peter, Paul, Mary?
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
匿名用户例子:
Peter
Paul
Mary
有没有一种简单的方法可以把它变成一串
Peter, Paul, Mary?
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
墨值悬赏