如何将值推入 jsonb 列中的 key[]?
How to push value into key[] in jsonb column?
我在 Postgres table 中有这样的 jsonb
结构:{ "res": [123, 223] }
我想将值推入 res
数组。我不知道数组上有多少个值,并且 jsonb_insert
对位置进行操作,所以我尝试使用 -1
位置:
select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
jsonb_insert
--------------------------
{"res": [123, 333, 223]}
它不起作用。如何将新值推送到数组末尾?
我正在使用 Postgres 9.6
一个可能的解决方案是使用大得离谱的头寸:
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
jsonb_insert
--------------------------
{"res": [123, 223, 333]}
使用 -1
索引和 insert_after = true
:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', true);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 101112, 333]}|
+-------------------------------------+
insert_after
的默认值是 false
,这意味着虽然您的目标是最后一个元素(索引 = -1),但您最终会在倒数第二个位置插入:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+
我在 Postgres table 中有这样的 jsonb
结构:{ "res": [123, 223] }
我想将值推入 res
数组。我不知道数组上有多少个值,并且 jsonb_insert
对位置进行操作,所以我尝试使用 -1
位置:
select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
jsonb_insert
--------------------------
{"res": [123, 333, 223]}
它不起作用。如何将新值推送到数组末尾?
我正在使用 Postgres 9.6
一个可能的解决方案是使用大得离谱的头寸:
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
jsonb_insert
--------------------------
{"res": [123, 223, 333]}
使用 -1
索引和 insert_after = true
:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', true);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 101112, 333]}|
+-------------------------------------+
insert_after
的默认值是 false
,这意味着虽然您的目标是最后一个元素(索引 = -1),但您最终会在倒数第二个位置插入:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+