Skip to content

JSON_ARRAY_INSERT

功能描述

插入元素至JSON文档指定路径数组位置。

语法格式

JSON_ARRAY_INSERT(json_doc, path, val[, path, val]...)

参数说明

JSON文档,多个路径+多个新值。

  • json_doc:JSON文本,JSON类型或可转换为JSON类型的类型。

  • path:JSON路径表达式,字符类型。

  • val:添加的新值,类型取值为(NULL、布尔型、数值型、自定义类型(OBJECT、VARRAY、TABLE)、JSON类型以及其他能转换成字符型的类型)。

说明:

  • 如果任何参数为NULL则返回NULL。
  • 如果json_doc是无效的JSON文档或任何path是无效的路径表达式或路径表达式中包含 * 或 ** 通配符 或路径选择不是数组元素,都将抛出错误。
  • 从左到有计算新值,产生的新值用于后续计算。
  • 如果路径选择数组元素,则新值插入到该位置,并旧址与后续元素向后移动。
  • 未查找到任何值的路径将被忽略。

函数返回类型

JSON数值类型

示例

sql
SELECT TO_CHAR(JSON_ARRAY_INSERT('["a", ["b", "c"], "d"]', '$[0]', 1, '$[1]', 2, '$[3]', 3));

EXPR1 | 
------------------------------------------------------------------------------
[1, 2, "a", 3, ["b", "c"], "d"]|

-- 在数组指定位置插入元素
SQL> SELECT TO_CHAR(JSON_ARRAY_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[0]', 0));

EXPR1 | 
------------------------------------------------------------------------------
[0, 1, [2, 3], {"a": [4, 5]}]|

-- 向内嵌数组中插入元素
SQL> SELECT TO_CHAR(JSON_ARRAY_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[1][0]', 'x'));

EXPR1 | 
------------------------------------------------------------------------------
[1, ["x", 2, 3], {"a": [4, 5]}]|

-- 向对象中的数组中插入元素
SQL> SELECT TO_CHAR(JSON_ARRAY_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[2].a[0]', 'x'));

EXPR1 | 
------------------------------------------------------------------------------
[1, [2, 3], {"a": ["x", 4, 5]}]|