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

SQL Server 2016之前版本(如2014)能否通过T-SQL将表转换为JSON

SQL Server 2014 环境下T-SQL生成JSON方案

首先明确结论:SQL Server 2014 没有内置JSON处理能力,你提到的XML转JSON、自定义T-SQL函数两种实现路径都是完全可行的,也是这个版本下生成JSON最常用的落地方式。

基于你现有XML逻辑的改造方案(改造成本最低)

你当前的存储过程已经完成了核心业务数据的查询、结构化XML生成,不需要重写数据查询逻辑,只需要两步调整就能输出JSON:

  • 修正现有XML拼接逻辑:你现在最后用(Objeto)作为分隔符拼接三个XML片段的写法存在解析风险,一旦业务字段里出现相同文本就会导致结构错乱,应该直接用XML原生语法嵌套子节点,构造完整的层级XML结构,示例调整如下:
-- 替换你原存储过程最后拼接三个XML的SELECT逻辑
SET @socio = (
    SELECT TOP 1
        -- 此处保留你原@socio查询里的所有CardCode、FederalTaxID等字段,无需改动
        (
            SELECT @contacto.query('/*') FOR XML PATH(''), TYPE
        ) AS ContactEmployees,
        (
            SELECT @direccion.query('/*') FOR XML PATH(''), TYPE
        ) AS BPAddresses
    FROM tblsocio_negocios sn
    -- 此处保留你原有的所有INNER JOIN、WHERE条件,无需改动
    FOR XML PATH ('BusinessPartner'), TYPE
)
  • 编写一个通用的XML转JSON标量函数,核心逻辑是遍历XML的所有节点、属性,区分字段类型做格式化:字符串类型加双引号并转义内部的引号、换行、斜杠等特殊字符;数值、布尔类型不加引号;空值输出null;自动识别重复节点生成JSON数组。

直接编写自定义JSON生成函数

如果不想走XML中转,也可以直接编写T-SQL函数,在查询数据时直接拼接JSON字符串,实现时需要注意几个规则:

  • 所有字符串类型值必须做转义处理,避免特殊字符导致JSON格式非法
  • 数值、布尔类型值不需要包裹双引号,NULL值统一输出null
  • 嵌套对象、数组要严格匹配大括号、中括号的闭合关系

注意:如果你的业务场景数据量较大、或者JSON结构非常复杂,更建议在业务应用层做JSON序列化,纯T-SQL实现的JSON生成逻辑维护成本更高,处理特殊字符的边界case也更多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:21:21