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

Postgresql 删除数组中的元素

extra为 {“a”: [null, 3, null],“b”: 111} 使用sql 将extra中a中的null移除

第一步:

首先先把[null, 3, null]移除,

select json_agg(elem) filter ( where elem != 'null' )
from (select jsonb_array_elements('[null,3,null]'::jsonb) as elem) t;

这将得到[3]

  1. jsonb_array_elements 会展开 extra 中 a 数组的每个元素。
  2. filter ( where elem != ‘null’ ) 用于过滤掉 null。
  3. 使用 jsonb_agg 将非 null 的值重新聚合为一个数组。

第二步:

使用jsonb_set更新数据

update table_name
SET extra = jsonb_set(extra::jsonb, '{a}', (select json_agg(elem)
                                            from jsonb_array_elements((extra -> 'a')::jsonb) as elem
                                            where elem != 'null')::jsonb)
where extra::jsonb ? 'a';

更多json用法:

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


http://www.kler.cn/a/304059.html

相关文章:

  • Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别
  • GitLab实现 HTTP 访问和 SMTP 邮件发送
  • Day 63 || 拓扑排序、dijkstra
  • [vulnhub] DarkHole: 1
  • 前端入门一之ES6--面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包
  • 丹摩征文活动 | SD3+ComfyUI的图像部署实践
  • Linux系统使用Docker安装DockerUI并实现远程管理本地容器无需公网IP
  • Prompt最佳实践|善用分隔符,让你的Prompt更清晰
  • 解决VScode中每次git push或者pull都需要重新输入账户名和密码问题
  • PL/SQL Developer工具的使用
  • 【数据结构初阶】队列接口实现及用队列实现栈超详解
  • 基于SpringBoot的高校电动车租赁服务管理系统
  • 智能化等保测评工具的兴起与应用实践
  • 房产销售系统:SpringBoot技术优化方案
  • 在已安装Python环境的基础上安装anaconda或者其他版本Python
  • 使用 RabbitMQ 实现秒杀订单系统的异步消息处理
  • 【C++】Linux平台C++实现Socket通信(Unix域、TCP/IP、UDP)
  • 基于Python的B站热门视频可视化分析与挖掘系统
  • 伊顿穆勒Moeller控制器电源维修easy 619-AC-RCX
  • CAESES许可证转移方法
  • Keras深度学习中文文本分类
  • wopop靶场漏洞挖掘练习
  • 【数学建模国赛】写作心得
  • 搜维尔科技:AcuMap - 针灸模拟VR训练解决方案
  • Leetcode 109.有序链表转换二叉搜索树(Medium)
  • Android Studio 安装2022版稳定版 2022.3.1 详细操作(带图展示)