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

如何编写SQL查询从表字段生成指定结构的JSON对象?

生成指定格式JSON的SQL查询方案

原数据表

idsign1value1qty1sign2value2qty2
1"positive""A"10"negative""B"5

需求:生成JSON对象 {"A": 10, "B": -5},其中键对应value1/value2的值,值根据sign调整qty的正负("positive"为正,"negative"为负)。

以下是主流数据库的实现方案:

PostgreSQL

使用json_build_object构造JSON对象:

SELECT json_build_object(
    value1, CASE sign1 WHEN 'positive' THEN qty1 ELSE -qty1 END,
    value2, CASE sign2 WHEN 'positive' THEN qty2 ELSE -qty2 END
) AS result_json
FROM your_table;

MySQL

使用JSON_OBJECT函数:

SELECT JSON_OBJECT(
    value1, IF(sign1 = 'positive', qty1, -qty1),
    value2, IF(sign2 = 'positive', qty2, -qty2)
) AS result_json
FROM your_table;

SQL Server

版本2022及以上(支持JSON_OBJECT)

SELECT JSON_OBJECT(
    value1: CASE sign1 WHEN 'positive' THEN qty1 ELSE -qty1 END,
    value2: CASE sign2 WHEN 'positive' THEN qty2 ELSE -qty2 END
) AS result_json
FROM your_table;

旧版本(兼容SQL Server 2016+,使用FOR JSON PATH)

SELECT (
    SELECT 
        CASE sign1 WHEN 'positive' THEN qty1 ELSE -qty1 END AS [A],
        CASE sign2 WHEN 'positive' THEN qty2 ELSE -qty2 END AS [B]
    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
) AS result_json
FROM your_table;

注:如果数据表有多行数据,需要根据实际需求调整聚合逻辑(比如使用json_agg等函数合并结果),上述方案针对单条数据场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:58:25