You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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;

逻辑说明:

  1. OPENJSON(@json)先解析外层JSON数组,得到数组内的单个对象;
  2. CROSS APPLY OPENJSON(outer_json.value)将该对象的顶级键(p1/p2/p3)对应的JSON值拆分开;
  3. WITH子句定义目标表的字段类型和对应JSON路径,直接提取出name、age、address字段值。

内容的提问来源于stack exchange,提问作者Madhava Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:40:22