如何在PostgreSQL 12中准备/插入一个元素到jsonb数组中



示例:

drop table a;
create table a( value jsonb);
insert into a values ('{"items":[0,1,2]}'::jsonb);
select value->'items' from a;

我已经知道如何追加到数组中。例如:

select jsonb_build_object('items', 
value->'items' || '3'::jsonb
)  from a

返回:

{"items": [0, 1, 2, 3]}

但我不知道如何预浸将元素插入数组

例如:

select jsonb_build_object('items', 
jsonb_array_insert(value->'items',0,-1)
)  from a

这将返回:

{"items": [-1, 0, 1, 2]}

但没有jsonb_array_insert函数。文档位于https://www.postgresql.org/docs/12/functions-json.html(表9.45。Additional jsonb Operators(描述了一些有用的jsonb运算符,但它们都不能用于插入/准备元素。

jsonb_array_elements(value->'items')可以用于将数组转换为一组元素。但我不知道如何使用它来将元素插入/预插入数组中。

我可以为此编写自己的PL/SQL函数,但一定有更好的方法!

您可以使用JSONB_INSERT来实现您想要的。请参阅文档。

试试这个方法:

select 
jsonb_insert(value,'{items,0}','-1'::jsonb)
from a

此功能完全符合您的要求。

相关内容

最新更新