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

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
*/
怎么样,是不是很简单。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值