使用OPENJSON(Transact-SQL)解析JSON生成SQL Server数据表求助
SQL Server解析JSON为指定数据表的查询语句
可以通过OPENJSON结合CROSS APPLY解析这种嵌套结构的JSON,转换为目标格式的数据表:
DECLARE @json NVARCHAR(max) = N'[ { "p1": { "name": "mike", "age": 34, "address": "berlin" }, "p2": { "name": "david", "age": 45, "address": "munich" }, "p3": { "name": "rachel", "age": 15, "address": "frankfurt" } } ]'; SELECT name, age, address FROM OPENJSON(@json) AS outer_json CROSS APPLY OPENJSON(outer_json.value) WITH ( name NVARCHAR(50) '$.name', age INT '$.age', address NVARCHAR(100) '$.address' ) AS person_data;
逻辑说明:
OPENJSON(@json)先解析外层JSON数组,得到数组内的单个对象;CROSS APPLY OPENJSON(outer_json.value)将该对象的顶级键(p1/p2/p3)对应的JSON值拆分开;WITH子句定义目标表的字段类型和对应JSON路径,直接提取出name、age、address字段值。
内容的提问来源于stack exchange,提问作者Madhava Reddy
相关产品推荐
相关产品推荐

