MS SQL Server的STRING_SPLIT和STRING_AGG函数
程序员文章站
2022-04-12 15:34:15
在较新版本的SQL中,出现有2个函数,STRING_SPLIT和STRING_AGG,前者是把带有分隔的字符串转换为表,而后者却是把表某一表转换为以某种字符分隔的字符串。 如下面: 把它转存为表: DECLARE @dump_data AS TABLE([value] NVARCHAR(MAX)) ......
在较新版本的sql中,出现有2个函数,string_split和string_agg,前者是把带有分隔的字符串转换为表,而后者却是把表某一表转换为以某种字符分隔的字符串。
如下面:
declare @str nvarchar(max) = n'ads,adfd,agf,sdfgsfd,dsfg,ret,try,t,adf,gsf,uy,qwerq'
把它转存为表:
declare @dump_data as table([value] nvarchar(max)) insert into @dump_data ([value]) select [value] from string_split(@str,',')
反转,需要把临时表这列[value] 转换为一个字符串:
select string_agg([value], ',') from @dump_data
其实string_agg这函数,还可以对新串联的字符进行排序:
select string_agg([value], ',') within group (order by [value]) from @dump_data
如果你不想创建临时表,把拆分的数据插入临时表,步骤繁复。可以使用派生表来进行:
select string_agg([value], ',') within group (order by [value]) from (select [value] from string_split(@str,',')) source
或者使用一般资料表运算式cte (common table expression)
;with dump_data as ( select [value] from string_split(@str,',') ) select string_agg([value], ',') within group (order by [value]) from dump_data;
下一篇: 6则枸杞治病小偏方 注意饮食禁忌
推荐阅读
-
SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
-
SQL Server FOR XML PATH 和 STUFF函数的用法
-
ms sql server中实现的unix时间戳函数(含生成和格式化,可以和mysql兼容)
-
MS SQL Server的STRING_SPLIT和STRING_AGG函数
-
SQL Server中的RAND函数的介绍和区间随机数值函数的实现
-
MS SQL Server的COALESCE函数
-
深入浅析Orcale的nvl函数和SQL Server的isnull函数
-
SQL Server FOR XML PATH 和 STUFF函数的用法
-
分析MS SQL Server里函数的两种用法
-
Sql Server 2012 转换函数的比较(Cast、Convert和Parse)