您的位置:首页 > 数据库

SQL Server 2017新增:string_agg函数(分组合并字符串)

2018-01-29 15:10 417 查看
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 t
(
name varchar(10),
v varchar(20)
)

insert into t
select 'a','100' union all
select 'a','20' union all
select 'b','3' union all
select 'b','2' union all
select 'c','5'

二、合并字符串

代码如下,是不是很简单,so easy 。

select name,
string_agg(v,',') as vv
from t
group by name
/*
name	vv
a	100,20
b	3,2
c	5
*/


三、用order by子句,对要合并的字符串进行排序

上面例子中,name为a的,把v列合并成 100,20,如果要合并成20,100呢,如何实现?

select name,
string_agg(v,',') within group(order by cast(v as int)) as vv
from t
group by name
/*
name	vv
a	20,100
b	2,3
c	5
*/
怎么样,是不是很简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: