从 postgresql 中没有键的 jsonb 数组数据中删除一个值
Delete a value from jsonb array data having no key in postgresql
Table结构为:
CREATE TABLE mine_check.meta
(
sl_no bigserial NOT NULL,
tags jsonb NOT NULL DEFAULT '[]'::jsonb
);
Table 长得像
sl.no tags
1 [120,450]
2 [120]
3 [450,980,120]
4 [650]
我需要从标签列中删除 120 - 没有密钥
我尝试阅读了很多地方 - 他们有更新或删除的密钥。
我应该如何进步?
恐怕必须以困难的方式完成 - 取消嵌套 JSONB 数组,select 并从中过滤并聚合回 JSONB 数组。
select sl_no,
(
select jsonb_agg(e::integer)
from jsonb_array_elements_text(tags) e
where e <> 120::text
) tags
from mine_check.meta;
Table结构为:
CREATE TABLE mine_check.meta
(
sl_no bigserial NOT NULL,
tags jsonb NOT NULL DEFAULT '[]'::jsonb
);
Table 长得像
sl.no tags
1 [120,450]
2 [120]
3 [450,980,120]
4 [650]
我需要从标签列中删除 120 - 没有密钥
我尝试阅读了很多地方 - 他们有更新或删除的密钥。
我应该如何进步?
恐怕必须以困难的方式完成 - 取消嵌套 JSONB 数组,select 并从中过滤并聚合回 JSONB 数组。
select sl_no,
(
select jsonb_agg(e::integer)
from jsonb_array_elements_text(tags) e
where e <> 120::text
) tags
from mine_check.meta;