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

相关推荐
lifewange21 分钟前
DBeaver如何安装
数据库
m0_6315298228 分钟前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
2301_8180084441 分钟前
数据库模型设计实战:如何正向工程从模型建表_规范化项目开发流程
jvm·数据库·python
期待のcode1 小时前
Redis的数据清理机制
数据库·redis·缓存
oradh1 小时前
Oracle数据库服务器端编程介绍
数据库·oracle·oracle基础·oracle数据库基础
2401_846339562 小时前
Vue 3 中集成 Three.js 场景的完整实现指南
jvm·数据库·python
日取其半万世不竭2 小时前
Excalidraw 自建部署指南:白板协作工具完全私有化
服务器·网络·数据库
这个DBA有点耶2 小时前
联合索引的顺序:写错等于白建(最左前缀+范围条件+覆盖索引详解)
数据库·代码规范
2301_775639892 小时前
Golang怎么写TODO待办应用_Golang TODO应用教程【深入】
jvm·数据库·python
胖头鱼的鱼缸(尹海文)2 小时前
数据库管理-第423期 Oracle AI DB 23.26.2新特性一览(20260504)
数据库·人工智能·oracle