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

相关推荐
2501_91424593几秒前
Go语言怎么做并发下载_Go语言多协程下载教程【技巧】
jvm·数据库·python
a95114164210 分钟前
mysql如何创建安全的用户账户_mysql权限配置方法
jvm·数据库·python
摇滚侠14 分钟前
短信验证码登录 Redis实战 黑马程序员
数据库·redis·缓存
qq_3729069321 分钟前
Flask应用Python内存占用高怎么办_使用内存分析工具排查对象泄露
jvm·数据库·python
HHHHH1010HHHHH22 分钟前
怎么在MongoDB中追踪一个Document的具体流转路径_从Chunk分布到迁移历史日志分析
jvm·数据库·python
InfinteJustice31 分钟前
SQL窗口函数解决多维排名问题_组合排序实战
jvm·数据库·python
HHHHH1010HHHHH31 分钟前
SymPy中正确处理含整数参数的三角函数定积分:避免n=0特例干扰结果
jvm·数据库·python
一只大袋鼠33 分钟前
MyBatis 从入门到实战(二):代理 Dao 开发与多表关联查询
java·开发语言·数据库·mysql·mybatis
m0_7164300739 分钟前
JavaScript中类属性与原型属性的覆盖规则详解
jvm·数据库·python
lzksword41 分钟前
C++ Builder XE Idhttp下载网页数据
数据库