SQL Server 如何使用OPENJSON函数将包含分隔符的字符串拆分为多行

ehxuflar  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(152)

我 正在 尝试 使用 SQL Server 2019 中 的 OPENJSON 函数 拆分 以下 字符 串 :

DECLARE @x varchar(400)  = N'A,B,"C,1",D,'

--SELECT '["'+replace(string_escape(@x,'json'),',','","')+'"]'

SELECT 
    [Key]+1 AS Seq,
    Value 
FROM 
    OPENJSON('["' + REPLACE(STRING_ESCAPE(@x, 'json'), ',', '","') + '"]')

中 的 每 一 个
但 返回 的 结果 为 :

我 想 将 其 显示 为 :

谢谢

i86rm4rw

i86rm4rw1#

这就是我的想法带给我的。
注:"'s的意外结果不平衡。

dbFiddle示例

DECLARE @x varchar(400)  = N'A,B,"C,1",D,'

Select Seq= Grp
      ,value = replace(string_agg(Value,','),'"','')
 From (
        SELECT [Key]+1 AS Seq
              ,Value 
              ,Grp = sum( case when charindex('"',Value)<=1 then 1 else 0 end ) over (order by [key]+0) 
        FROM OPENJSON('["'+replace(string_escape(@x,'json'),',','","')+'"]')
      ) A
 Group By Grp
 Order By Grp

结果

Seq value
1   A
2   B
3   C,1
4   D
5

相关问题