示例:
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
此功能完全符合您的要求。