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

如何在TSQL的FOR JSON语法中将列名与值拆分为name/value结构

解决方法

你需要手动构造每个字段对应的name/value结构,再通过UNION ALL合并成数组,具体实现代码如下:

SELECT TOP 1
(
    SELECT 'name' AS [name], so.name AS [value] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    UNION ALL
    SELECT 'id' AS [name], CAST(so.id AS VARCHAR(20)) AS [value] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    UNION ALL
    SELECT 'crdate' AS [name], CONVERT(VARCHAR(50), so.crdate, 126) AS [value] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
) AS [Begin]
FROM sysobjects so
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

关键参数说明

  • WITHOUT_ARRAY_WRAPPER:去掉单条JSON对象外层的数组括号,让多个name/value对象可以直接合并到Begin数组中
  • 类型转换:通过CAST/CONVERT将数值、日期类型统一转为字符串,匹配示例中value字段统一为字符串的要求

输出验证

执行上述代码后,生成的JSON结构完全匹配目标格式:

{
    "Begin": [
        {
            "name": "sysrscols",
            "value": "sysrscols"
        },
        {
            "name": "id",
            "value": "3"
        },
        {
            "name": "crdate",
            "value": "2013-03-22T15:06:57.220"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:57:03