JSON_REPLACE
📄字数 721
👁️阅读量 加载中...
功能描述
从JSON文本中替换指定路径下的数据。
语法格式
sql
JSON_REPLACE( json_doc, path, val[, path, val]... )输入参数
json_doc:JSON文本,JSON类型或字符类型。path:路径表达式,一个或多个。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_REPLACE('[1, [2, 3]]', '$[0]', 0, '$[2]', 6);
+-------------+
| EXPR1 |
+-------------+
| [0, [2, 3]] |
+-------------+
-- 替换bool类型
SQL> SELECT JSON_REPLACE('{"x": 1}', '$.x', true);
+-------------+
| EXPR1 |
+-------------+
| {"x": true} |
+-------------+
-- 替换null值
SQL> SELECT JSON_REPLACE('{"x": 1}', '$.x', null);
+-------------+
| EXPR1 |
+-------------+
| {"x": null} |
+-------------+
-- 替换字符类型
SQL> SELECT JSON_REPLACE('{"x": 1}', '$.x', '{"z": 2}');
+---------------------+
| EXPR1 |
+---------------------+
| {"x": "{\"z\": 2}"} |
+---------------------+
-- 替换JSON类型
SQL> SELECT JSON_REPLACE('{"x": 1}', '$.x', CAST('{"z": 2}' AS JSON));
+-----------------+
| EXPR1 |
+-----------------+
| {"x": {"z": 2}} |
+-----------------+