当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring框架的学习SpringMVC(1)
  • Open3D 删除点云中重叠的点(方法二)
  • 提升效能:Symfony 性能优化实用指南
  • 【MYSQL】InnoDB引擎为什么选可重复读作为默认隔离级别
  • 多粒度封锁-封锁粒度、多粒度封锁模式
  • 运维---关于服务治理Nacos的快问快答
  • 《梦醒蝶飞:释放Excel函数与公式的力量》8.3 COUNTBLANK函数
  • win7系统快速安装python
  • pnpm的坑
  • 基于FPGA的DDS信号发生器
  • 运维系列.Nginx配置中的高级指令和流程控制
  • 秋招突击——7/4——复习{}——新作{最长公共子序列、编辑距离、买股票最佳时机、跳跃游戏}
  • Django中模型的基于类的混入
  • 华为 eNSP 模拟器 配置RIP实例 动态路由协议
  • Meerkat:第一个统一视听空间和时间定位的MLLM
  • #Java异常处理
  • angular学习第一篇-----环境搭建
  • Elasticsearch 参考指南(升级前重新索引)
  • EOS是什么
  • js操作时间(持续更新)
  • js对象的深浅拷贝
  • leetcode46 Permutation 排列组合
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Mysql优化
  • vue脚手架vue-cli
  • Vue学习第二天
  • windows下mongoDB的环境配置
  • 回顾2016
  • 基于游标的分页接口实现
  • 坑!为什么View.startAnimation不起作用?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 使用Gradle第一次构建Java程序
  • -- 数据结构 顺序表 --Java
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 原生Ajax
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Android开发者必备:推荐一款助力开发的开源APP
  • MPAndroidChart 教程:Y轴 YAxis
  • # SpringBoot 如何让指定的Bean先加载
  • #java学习笔记(面向对象)----(未完结)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm码农论坛 毕业设计 231126
  • (回溯) LeetCode 78. 子集
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (三)c52学习之旅-点亮LED灯
  • (算法设计与分析)第一章算法概述-习题
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景