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

Oracle数据库中向JSON对象数组末尾追加元素问题求助

错误原因
  • 你使用的JSON_MODIFY是SQL Server专属的JSON修改函数,Oracle数据库并不支持该函数,因此SQL解析阶段会识别为语法错误,抛出ORA-00917: missing comma报错。
正确实现方案

根据你使用的Oracle版本选择对应写法即可:

Oracle 18c及以上版本(推荐)

使用Oracle原生的JSON_TRANSFORM函数的APPEND操作,语法简洁性能最优:

UPDATE 替换为你的表名
SET configuration = JSON_TRANSFORM(
    configuration,
    APPEND '$.sections' = JSON('{"active":false,"code":"page.body"}')
)
-- 请添加必要的WHERE条件,避免全表更新
WHERE 替换为你的过滤条件;

Oracle 12cR2 兼容写法

如果使用的是12cR2版本,没有JSON_TRANSFORM函数,可使用JSON_ARRAY_APPEND拼接后回写:

UPDATE 替换为你的表名
SET configuration = JSON_SET(
    configuration,
    '$.sections',
    JSON_ARRAY_APPEND(
        JSON_VALUE(configuration, '$.sections' FORMAT JSON),
        '$',
        JSON('{"active":false,"code":"page.body"}')
    )
)
-- 请添加必要的WHERE条件,避免全表更新
WHERE 替换为你的过滤条件;
注意事项
  • 执行UPDATE前务必替换SQL中的表名、过滤条件,避免误改全表数据
  • 正式执行前建议先通过SELECT语句验证修改结果是否符合预期:
SELECT 
  configuration AS old_config,
  JSON_TRANSFORM(
    configuration,
    APPEND '$.sections' = JSON('{"active":false,"code":"page.body"}')
  ) AS new_config
FROM 替换为你的表名
WHERE 替换为你的过滤条件;
  • 如果出现类型转换报错,可在函数返回结果外层包裹TO_CLOB()适配CLOB类型列的存储要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:09:04