JSONB_INSERT
功能描述
Vastbase支持JSONB_INSERT函数,可以将一个新值插入到JSONB值中的指定路径位置。
函数返回给定的JSONB值,其中在指定的路径上插入了指定的新值。
如果path指派的项是一个数组元素:
如果insert_after为假(此为默认值),则new_value将被插入到该项之前。
如果insert_after为真则new_value将被插入到该项之后。
如果由path指派的项是一个对象字段,则只在对象不包含该字段时才插入new_value。
注意事项
- 仅V2.2 Build 10(Patch No.10)及以上补丁版本支持该特性。
- 路径中的所有前值都必须存在,否则将不加改变地返回target。
- 出现在路径中的负整数从JSON数组的末尾开始计数。
- 如果最后一个路径值是超出范围的数组索引,则新值将添加到数组的开头(如果索引为负)或数组的末尾(如果索引为正)。
语法格式
jsonb_insert ( target jsonb, path text[], new_value jsonb [, insert_after boolean ] ) -> JSONB
参数说明
target
将要插入新值的JSONB值。
path
一个文本数组,指示了新值插入的位置。
new_value
要插入的新值。
insert_after
指定是否插入到指定的位置之后。默认是值 false。
示例
示例1 路径为负数时从JSON数组的末尾开始计数。
select jsonb_insert('{"a": ["This","is","mine"]}', '{a,2}', '"not"');
返回结果为如下,在路径指定项之前为JSON数组插入new_value:
jsonb_insert
--------------------------------------
{"a": ["This", "is", "not", "mine"]}
(1 row)
示例2 insert_after为真则new_value将被插入到该项之后。
select jsonb_insert('{"a": ["This","is","mine"]}', '{a,2}', '"not"', true);
返回结果为如下,为路径指定项之后插入new_value:
jsonb_insert
--------------------------------------
{"a": ["This", "is", "mine", "not"]}
(1 row)
示例3 路径为负数时从JSON数组的末尾开始计数。
select jsonb_insert('{"a": ["This","is","mine"]}', '{a, -1}', '"not"');
返回结果为如下,为JSON数组插入new_value:
jsonb_insert
--------------------------------------
{"a": ["This", "is", "not", "mine"]}
(1 row)