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

PostgreSQL中更新JSON列指定规则键值对的技术求助

PostgreSQL中更新JSON列指定规则键值对的技术求助

大家好,我现在碰到个PostgreSQL的实操问题,想请教下各位大佬:我有一张名为report的表,里面有个JSON类型的列data,需要完成两个特定的更新操作:

  • 操作一:找出所有以number开头的键(不管这些键嵌套在JSON结构的哪一层),把它们的值统一改成数字123。举个实际例子:
    原数据:

    {"number_01": 14322, "number_98": 629578}
    

    更新后应该变成:

    {"number_01": 123, "number_98": 123}
    
  • 操作二:找出所有值包含http://139.168.6.44的键(不管键名是什么,也不管嵌套层级),把值里的这个旧地址替换成http://139.168.6.55。比如原数据:

    {"file": "http://139.168.6.44/upload"}
    

    更新后要变成:

    {"file": "http://139.168.6.55/upload"}
    

需要特别说明的是,我事先完全不知道data列里的JSON具体结构,那些以number开头的键可能出现在任意嵌套层级里。

我自己尝试写了一段PL/pgSQL代码来处理第一个操作,但运行起来耗时特别久,而且好像根本没生效,代码开头是这样的:

DO $$
    DECLARE
      _keys_to_update TEXT[];
   ...

有没有大佬能帮我捋捋这两个需求怎么高效实现呀?

备注:内容来源于stack exchange,提问作者xinyu xi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:13:10