【发布时间】:2020-12-27 12:35:04
【问题描述】:
我们有一个带有jsonb[] 列的表,其中包含一个带有各种键的JSON 对象数组。数据库是 PostgreSQL (v9.6)
----------------------------------------------------
| id | data (jsonb[]) |
----------------------------------------------------
| 1 | [{a:1, B:2, c:3}, {a:4, c:5}, {a:6, B:7}] |
| 2 | [{a:8}, {B:9, c:10}] |
| 3 | [{a:11}] |
----------------------------------------------------
我们想删除或设置为空 B:
的所有值所以,我们想得到
---------------------------------------------------------------
| id | data (jsonb[]) |
---------------------------------------------------------------
| 1 | [{a:1, B:null/"", c:3}, {a:4, c:5}, {a:6, B:null/""}] |
| 2 | [{a:8}, {B:null/"", c:10}] |
| 3 | [{a:11}] |
---------------------------------------------------------------
或
------------------------------------------
| id | data (jsonb[]) |
------------------------------------------
| 1 | [{a:1, c:3}, {a:4, c:5}, {a:6}] |
| 2 | [{a:8}, {c:10}] |
| 3 | [{a:11}] |
------------------------------------------
如果没有简单的方法来更新 B 字段,我们很乐意找到一种方法来获取所有具有 B 的记录:在数据字段中,在这种情况下,我们可以加载所有记录并在外部处理它们数据库。
到目前为止,我们还没有找到方法,甚至找不到所有具有 B: 字段的记录。
任何想法都会很棒,谢谢!
【问题讨论】:
标签: sql arrays postgresql jsonb postgresql-9.6