【发布时间】:2020-12-26 14:05:41
【问题描述】:
例子:
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]}
但我不知道如何preprend或插入一个元素到数组中。
例如:
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 函数,但一定有更好的方法!
【问题讨论】:
标签: arrays postgresql jsonb