欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Postgres JSON字段怎么修改key的名称

Postgres JSON字段怎么修改key的名称

2024/10/25 18:33:46 来源:https://blog.csdn.net/this_is_id/article/details/140214426  浏览:    关键词:Postgres JSON字段怎么修改key的名称

场景

当你不小心将 key 的名称写错了(人员类别:多了一个冒号),或者想把引文改为中文(type改为类型

大致思路是添加一个新的 key,然后将旧的 key 删除

sql语句

假如 JSON 列为 extra

  • 可以使用 extra::jsonb ->> 'type' 获取到 type 的值

    ->> 以text形式获得 JSON 对象域 '{"a":1,"b":2}'::json->>'b' 2

  • 可以使用 extra::jsonb - 'type'type 删除

    - 从左操作数删除键/值对或者string 元素。键/值对基于它们的键值来匹配。 '{"a": "b"}'::jsonb - 'a'

  • 可以使用 jsonb_set 来修改 json 列中的值

    jsonb_set(target jsonb, path text[], new_value jsonb[,create_missing boolean]) 返回target,其中由 path指定的节用 new_value替换,如果 path指定的项不存在并且 create_missing为真(默认为 true)则加上 new_value。正如面向路径的 操作符一样,出现在path中的 负整数表示从 JSON 数组的末尾开始数。 jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0,f1}','[2,3,4]', false) jsonb_set('[{"f1":1,"f2":null},2]', '{0,f3}','[2,3,4]') [{"f1":[2,3,4],"f2":null},2,null,3] [{"f1": 1, "f2": null, "f3": [2, 3, 4]}, 2]

学习了以上知识点,就可以组合使用,最终的 sql 语句如下:

UPDATE table_name
SET extra = jsonb_set(extra::jsonb - 'type', '{类型}', extra::jsonb ->> 'type')
WHERE extra ->> 'type' is not null;

参考链接:

  • http://www.postgres.cn/docs/12/functions-json.html

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com