VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)