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
相关产品推荐
相关产品推荐

