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

如何在SQL生成的JSON根节点前添加dbName字段

在SQL生成的JSON根节点添加dbName字段的解决方案

问题背景

现有数据库表及初始化数据:

create table samplejson (recordId varchar(10), docNumber varchar(10))
insert into samplejson values ('1', '555555')
insert into samplejson values ('2', '777777')

需要生成包含根节点dbName字段的JSON,格式要求如下:

{ "dbName": "test123",
  "documents": [
    {
      "json": {
        "RecordId": "1",
        "docNumber": "555555"
      }
    },
    {
      "json": {
        "RecordId": "2",
        "docNumber": "777777"
      }
    }
  ]
}

目前已能通过以下SQL生成正确的documents结构,但无法在根节点添加dbName字段:

select recordId [json.RecordId],
docNumber [json.docNumber]
from samplejson
for json path, root('documents')

解决方法

方法1:使用JSON_MODIFY拼接字段

先生成包含documents的JSON字符串,再通过JSON_MODIFY函数在根节点插入dbName字段:

SELECT JSON_MODIFY(
    (SELECT recordId [json.RecordId], docNumber [json.docNumber] FROM samplejson FOR JSON PATH, ROOT('documents')),
    '$.dbName',
    'test123'
) AS final_json;

方法2:子查询构造完整JSON结构

直接构造包含dbName和documents的完整结构,documents部分通过子查询生成,最后用WITHOUT_ARRAY_WRAPPER去掉默认外层数组:

SELECT 
    'test123' AS dbName,
    (SELECT recordId [json.RecordId], docNumber [json.docNumber] FROM samplejson FOR JSON PATH) AS documents
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:50:36