Skip to content

JSON_REPLACE

功能描述

从JSON文档中将指定路径下的数据替换。

语法格式

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

参数说明

  • json_doc:JSON文本,JSON类型或JSON String类型。
  • path:路径表达式,一个或多个。
  • val:新值,类型取值为NULL、布尔型、数值型、自定义类型(OBJECT、VARRAY、TABLE)、JSON类型以及其他能转换成字符型的类型。

说明:

  • 如果任意参数为NULL返回NULL。
  • 从左到右依次计算路径并删除元素,并将前一次删除后的结果作为下一次计算的输入。
  • 对路径存在值的情况,使用新值覆盖原有值,若路径不存在值,则路径与值被忽略。
  • 以下情况将导致系统抛出错误:
    - json_doc是无效的JSON文档。
    - 任何path是无效的路径表达式或是$
    - 路径表达式中包含***通配符。

函数返回类型

CHAR数值类型。

示例

在数组中替换

将数组的第一个元素和第三个元素替换为新值。

sql
SQL> SELECT TO_CHAR(JSON_REPLACE('[1, [2, 3]]', '$[0]', 0, '$[2]', 6));

EXPR1 | 
------------------------------------------------------------------------------
[0, [2, 3]]|

写入JSON类型数据

sql
SQL> SELECT TO_CHAR(JSON_REPLACE('{"x": 1}', '$.x', 'true'));

EXPR1 | 
------------------------------------------------------------------------------
{"x": "true"}|


SQL> SELECT TO_CHAR(JSON_REPLACE('{"x": 1}', '$.x', '[1, 2]'));

EXPR1 | 
------------------------------------------------------------------------------
{"x": "[1, 2]"}|

SQL> SELECT TO_CHAR(JSON_REPLACE('{"x": 1}', '$.x', CAST('{"z": 2}' AS JSON)));

EXPR1 | 
------------------------------------------------------------------------------
{"x": {"z": 2}}|