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

如何从SQL Server数据库表生成嵌套JSON Schema文件

问题描述

我有一张存储JSON Schema所需列信息(如标签名、SQL Server类型等)的表,需要编写SQL语句生成JSON输出。目前仅能实现无嵌套的JSON,但生成嵌套JSON时遇到瓶颈。我可以在新列中存储如"Details:"、"Name:"这类嵌套节点名称,但不知如何利用它们生成目标结构。

现有0级嵌套查询语句

Select 
STRING_AGG(CAST(CONCAT(REPLICATE(' ', 0), '"', friendlyname, '":{"type":["', commontype, '"', CASE WHEN nullable = 1 THEN ',"null"' ELSE '' END, '], "sqltype":"', sqltype, 
CASE WHEN maxlength IS NULL AND precision IS NULL AND scale IS NULL THEN '' ELSE CONCAT('(', maxlength, CAST(precision AS VARCHAR(2)) + ',', scale, ')') END, '", "nullable":"', 
CASE WHEN nullable = 1 THEN 'true' ELSE 'false' END, '", "Description":"', description, '"}') AS VARCHAR(MAX)), 
CONCAT(',', CHAR(13), CHAR(10))) WITHIN GROUP (ORDER BY friendlyname)
FROM Mytable

表结构

Column_nameTypeLength
dyecodevarchar20
friendlynamesysname256
requiredbit1
commontypevarchar80
sqltypesysname256
maxlengthsmallint2
precisiontinyint1
scaletinyint1
nullablebit1
descriptionvarchar128

表数据

friendlynamerequiredcommontypesqltypemaxlengthprecisionscalenullabledescription
AccountNo1numberintNULLNULLNULL0
AccountRegisterDate1stringdateNULLNULLNULL0
AccountSum1numberdecimalNULL2840
MarketValue1numberdecimalNULL2840
FirstName1stringvarchar100NULLNULL0
LastName1stringvarchar100NULLNULL0
MiddleName1stringvarchar100NULLNULL0

期望输出

{
  "AccountNo": {
    "type": [
      "number"
    ],
    "sqltype": "int",
    "nullable": "false",
    "Description": ""
  },
  "AccountRegisterDate": {
    "type": [
      "string"
    ],
    "sqltype": "date",
    "nullable": "false",
    "Description": ""
  },
  "AccountSum": {
    "type": [
      "number"
    ],
    "sqltype": "decimal(28,4)",
    "nullable": "false",
    "Description": ""
  },
  "Details": {
    "Name": {
      "FirstName": {
        "type": [
          "string"
        ],
        "sqltype": "varchar(100)",
        "nullable": "false",
        "Description": ""
      },
      "LastName": {
        "type": [
          "string"
        ],
        "sqltype": "varchar(100)",
        "nullable": "false",
        "Description": ""
      },
      "MiddleName": {
        "type": [
          "string"
        ],
        "sqltype": "varchar(100)",
        "nullable": "false",
        "Description": ""
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:35:23