JSON_ARRAY_APPEND
📄字数 700
👁️阅读量 加载中...
功能描述
添加元素至JSON文本指定路径末尾。
语法格式
sql
JSON_ARRAY_APPEND( json_doc, path, val[, path, val]... )输入参数
JSON文本,多个路径+多个新值。
json_doc:JSON文本,JSON类型或字符类型。path:JSON路径表达式,字符类型。val:添加的新值,类型取值为NULL、布尔型、数值型、自定义类型(OBJECT、VARRAY、TABLE)、JSON类型以及其他能转换成字符型的类型。
输出结果
JSON类型。任意参数为NULL时,输出结果为NULL。
提示
- 从左到右计算新值,产生的新值用于后续计算。
- 如果路径选择是对象或者标量值,则该值会组装到数组中,并将新值添加到数组中。
- 未查找到任何值的路径将被忽略。
- 以下情况将导致系统抛出错误:
1.json_doc是无效的JSON文本。
2.path是无效的路径表达式。
3. 路径表达式中包含*或**通配符。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 0 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 0 | 函数参数有默认值 |
示例
sql
-- 在数组每个位置追加元素
SQL> SELECT JSON_ARRAY_APPEND('["a", ["b", "c"], "d"]', '$[0]', 1, '$[1]', 2, '$[3]', 3);
+--------------------------------+
| EXPR1 |
+--------------------------------+
| [["a", 1], ["b", "c", 2], "d"] |
+--------------------------------+
-- 在数组末尾追加元素
SQL> SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4);
+--------------+
| EXPR1 |
+--------------+
| [1, 2, 3, 4] |
+--------------+
-- 向内嵌数组中追加元素
SQL> SELECT JSON_ARRAY_APPEND('[1, [2, 3]]', '$[1]', 4);
+----------------+
| EXPR1 |
+----------------+
| [1, [2, 3, 4]] |
+----------------+
-- 向非数组中追加值
SQL> SELECT JSON_ARRAY_APPEND('1', '$', 2);
+--------+
| EXPR1 |
+--------+
| [1, 2] |
+--------+