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

相关推荐
学到头秃的suhian1 小时前
Redis消息队列
数据库·redis·缓存
野犬寒鸦1 小时前
从零起步学习并发编程 || 第九章:Future 类详解及CompletableFuture 类在项目实战中的应用
java·开发语言·jvm·数据库·后端·学习
爆米花byh1 小时前
在RockyLinux9环境的Doris单机版安装
linux·数据库·database
2401_848009721 小时前
Redis进阶学习
数据库·redis·学习·缓存
卓怡学长2 小时前
m225在线房屋租赁和电子签约系统的设计与实现
java·数据库·spring·tomcat·maven·intellij-idea
一生有你20203 小时前
powerdesigner使用逆向工程生成物理模型
数据库
zcn1263 小时前
时间条件高效用法
数据库·sql优化改写
zcn1263 小时前
消除无关列
数据库·sql优化改写
哈库纳玛塔塔3 小时前
dbVisitor 利用 queryForPairs 让键值查询一步到位
java·数据库·python
Moshow郑锴3 小时前
pgsql常见查询索引优化(等值条件+范围条件)
数据库·sql·mysql