Postgresql 删除数组中的元素

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

第一步:

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

sql 复制代码
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更新数据

sql 复制代码
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

相关推荐
会飞的大可3 分钟前
Redis 故障排查与应急手册:从理论到实践
数据库·redis·缓存
Li emily6 分钟前
解决了用美股历史数据api分析价格波动的困扰
数据库·人工智能·python
茉莉玫瑰花茶17 分钟前
MySQL 存储过程与触发器超详解:从基础到实战(含面试题 + 案例)
数据库·mysql
xiaokangzhe18 分钟前
MySQL故障排查与优化
数据库·mysql
圣光SG18 分钟前
Java类与对象及面向对象基础核心详细笔记
java·前端·数据库
2601_9498180921 分钟前
LangChain-08 Query SQL DB 通过GPT自动查询SQL
数据库·sql·langchain
ytttr87324 分钟前
C# 读取数据库表结构工具设计与实现
开发语言·数据库·c#
白露与泡影24 分钟前
从 BIO 到 epoll:高并发 I/O 模型演进与本质分析
java·服务器·数据库
知识分享小能手36 分钟前
MongoDB入门学习教程,从入门到精通,MongoDB副本集的核心机制(11)
数据库·学习·mongodb
一 乐39 分钟前
剧场管理系统|基于springboot + vue剧场管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·剧场管理系统