如何使用OPENJSON拼接SQL表列中的JSON数组
解决方案:解析JSON数组列并拼接字符串
不需要使用CURSOR,直接用OPENJSON结合STRING_AGG就能高效处理存储JSON数组的字符串列,按顺序拼接指定属性值。
示例代码
假设你的表名为YourTable,结构与提供的数据一致,执行以下查询即可得到期望结果:
SELECT t.ID, STRING_AGG(j.val, '') WITHIN GROUP (ORDER BY j.id) AS Result FROM YourTable t CROSS APPLY OPENJSON(t.Value) WITH ( id INT '$.id', val NVARCHAR(100) '$.val' ) j GROUP BY t.ID;
代码说明
OPENJSON(t.Value):直接解析Value列中的JSON数组,无需额外路径参数(因为列本身就是数组结构)。WITH子句:定义从JSON对象中提取的字段,对应每个数组元素的id和val属性。STRING_AGG(j.val, ''):将同一ID分组下的所有val值拼接成字符串,WITHIN GROUP (ORDER BY j.id)确保按id的顺序拼接,保证结果顺序正确。
示例结果
| ID | Result |
|---|---|
| 1 | john |
| 2 | doe |
这个方案是基于集合的操作,比CURSOR遍历效率更高,适合批量处理数据。
内容的提问来源于stack exchange,提问作者AsitK
相关产品推荐
相关产品推荐

