MS SQL Server的STRING_SPLIT和STRING_AGG函数,
在较新版本的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,
',')
Source Code
反转,需要把临时表这列[value] 转换为一个字符串:


SELECT STRING_AGG(
[value],
',')
FROM @dump_data
Source Code
其实STRING_AGG这函数,还可以对新串联的字符进行排序:


SELECT STRING_AGG(
[value],
',') WITHIN
GROUP (
ORDER BY [value])
FROM @dump_data
Source Code
如果你不想创建临时表,把拆分的数据插入临时表,步骤繁复。可以使用派生表来进行:


SELECT STRING_AGG(
[value],
',') WITHIN
GROUP (
ORDER BY [value])
FROM (
SELECT [value] FROM STRING_SPLIT(
@str,
',')) source
Source Code
或者使用一般资料表运算式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;
Source Code
http://www.htsjk.com/Sql_Server/24851.html
www.htsjk.Com
true
http://www.htsjk.com/Sql_Server/24851.html
NewsArticle
MS SQL Server的STRING_SPLIT和STRING_AGG函数, 在较新版本的SQL中,出现有2个函数,STRING_SPLIT和STRING_AGG,前者是把带有分隔的字符串转换为表,而后者却是把表某一表转换为以某种字符分隔的...
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。