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 子句,是对要合并的数据进行排序,可以升序、降序。
一、建表
二、合并字符串
代码如下,是不是很简单,so easy 。
三、用order by子句,对要合并的字符串进行排序
上面例子中,name为a的,把v列合并成 100,20,如果要合并成20,100呢,如何实现?
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 */怎么样,是不是很简单。
相关文章推荐
- SQL Server 2016新增:string_split函数(拆分字符串)
- SQL Server 2017 新的字符串聚合函数String_Agg
- SQL SERVER中字符串的合并与拆分
- js中的Array对象转成字符串;java中的List转成String数组, List集合的合并
- Sql Server中三种字符串合并方法的性能比较
- [sql server] 合并字符串
- Excel VBA 分组 合并字符串函数
- SQL Server 2005合并列成字符串 2008-11-07
- 【杭电-oj】-2017-字符串统计(字符串-string)
- 第十八章 4string 字符串的合并
- SQL一列多行字符串分组合并
- SQL Server 2005 行号、合并、分组
- Sql Server:多行合并成一行,并做分组统计
- Sql Server中三种字符串合并方法的性能比较
- 使用自定义聚集函数来实现分组合并字符串
- Sql Server:多行合并成一行,并做分组统计的两个方法
- 【走马观花】SQL SERVER 2012 新增函数详解-02.字符串函数FORMAT
- 数组Array和字符串String的indexOf方法,以及ES7(ES2016)中新增的Array.prototype.includes方法
- sql server 把多行合并一行,并连接成一个字符串
- Sql Server:多行合并成一行,并做分组统计的两个方法