JSON_ARRAY_APPEND
功能描述
添加元素至JSON文档指定路径末尾。
语法格式
JSON_ARRAY_APPEND( 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
SQL> SELECT TO_CHAR(JSON_ARRAY_APPEND('["a", ["b", "c"], "d"]', '$[0]', 1, '$[1]', 2, '$[3]', 3));
EXPR1 |
------------------------------------------------------------------------------
[["a", 1], ["b", "c", 2], "d"]|
在数组末尾追加元素
sql
SQL> SELECT TO_CHAR(JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4));
EXPR1 |
------------------------------------------------------------------------------
[1, 2, 3, 4]|
向内嵌数组中追加元素
sql
SQL> SELECT TO_CHAR(JSON_ARRAY_APPEND('[1, [2, 3]]', '$[1]', 4));
EXPR1 |
------------------------------------------------------------------------------
[1, [2, 3, 4]]|
向非数组中追加值
sql
SQL> SELECT TO_CHAR(JSON_ARRAY_APPEND('1', '$', 2));
EXPR1 |
------------------------------------------------------------------------------
[1, 2]|