Postgresql 如何将值推入jsonb列中的键[]?
我在Postgres表中有这样的Postgresql 如何将值推入jsonb列中的键[]?,postgresql,jsonb,Postgresql,Jsonb,我在Postgres表中有这样的jsonb结构:{“res”:[123223]},我想将值推送到res-数组中。我不知道数组上有多少个值,因为jsonb_insert在位置上运行,所以我尝试了-1位置: select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333'); jsonb_insert -------------------------- {"res": [
jsonb
结构:{“res”:[123223]}
,我想将值推送到res
-数组中。我不知道数组上有多少个值,因为jsonb_insert
在位置上运行,所以我尝试了-1
位置:
select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
jsonb_insert
--------------------------
{"res": [123, 333, 223]}
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
jsonb_insert
--------------------------
{"res": [123, 223, 333]}
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+
它不起作用。如何将新值推送到数组末尾
我正在使用Postgres 9.6一个可能的解决方案是使用可笑的大位置:
select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
jsonb_insert
--------------------------
{"res": [123, 333, 223]}
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
jsonb_insert
--------------------------
{"res": [123, 223, 333]}
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+
使用
-1
索引以及在=true之后插入\u
:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', true);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 101112, 333]}|
+-------------------------------------+
之后的insert\u的默认值为false
,这意味着尽管您以最后一个元素(索引=-1)为目标,但最终插入到倒数第二个位置:
select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
jsonb_insert
--------------------------
{"res": [123, 333, 223]}
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
jsonb_insert
--------------------------
{"res": [123, 223, 333]}
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+