我jsonb在 Postgres 表中有这样的结构:{ "res": [123, 223] }并且我想将值推入res-array 中。我不知道数组上有多少个值以及jsonb_insert对位置进行操作,所以我尝试使用-1位置:
select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
jsonb_insert
--------------------------
{"res": [123, 333, 223]}
Run Code Online (Sandbox Code Playgroud)
这是行不通的。如何将新值推入数组末尾?
我正在使用 Postgres 9.6
将-1索引与 一起使用insert_after = true:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', true);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 101112, 333]}|
+-------------------------------------+
Run Code Online (Sandbox Code Playgroud)
的默认值为,insert_after这false意味着虽然您的目标是最后一个元素 (index = -1),但您最终会插入到倒数第二个位置:
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);
+-------------------------------------+
|jsonb_insert |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |