JSON_ARRAY_INSERT
📄字数 633
👁️阅读量 加载中...
功能描述
插入元素至JSON文本指定路径数组位置。
语法格式
sql
JSON_ARRAY_INSERT( 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. 路径表达式中包含*
或**
通配符。
4. 路径选择不是数组元素。
示例
sql
-- 在数组中指定位置插入元素
SQL> SELECT JSON_ARRAY_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[0]', 0);
+-------------------------------+
| EXPR1 |
+-------------------------------+
| [0, 1, [2, 3], {"a": [4, 5]}] |
+-------------------------------+
-- 在数组中指定位置插入多个元素
SQL> SELECT JSON_ARRAY_INSERT('["a", ["b", "c"], "d"]', '$[0]', 1, '$[1]', 2, '$[3]', 3);
+---------------------------------+
| EXPR1 |
+---------------------------------+
| [1, 2, "a", 3, ["b", "c"], "d"] |
+---------------------------------+
-- 向内嵌数组中插入元素
SQL> SELECT JSON_ARRAY_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[1][0]', 'x');
+---------------------------------+
| EXPR1 |
+---------------------------------+
| [1, ["x", 2, 3], {"a": [4, 5]}] |
+---------------------------------+
-- 向对象中的数组中插入元素
SQL> SELECT JSON_ARRAY_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[2].a[0]', 'x');
+---------------------------------+
| EXPR1 |
+---------------------------------+
| [1, [2, 3], {"a": ["x", 4, 5]}] |
+---------------------------------+