Skip to content

JSON_INSERT

功能描述

将数据插入JSON文档。

语法格式

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

参数说明

  • json_doc:JSON目标文档,JSON类型或JSON String类型。

  • path:路径表达式,字符类型。

  • val:val类型取值为(NULL、布尔型、数值型、自定义类型(OBJECT、VARRAY、TABLE)、JSON类型以及其他能转换成字符型的类型)。

说明:

  • 如果任何参数为NULL则返回NULL。
  • 从左到有计算新值,产生的新值用于后续计算。
  • 文档中path存在值时,该路径值对将被忽略。
  • 若路径表述为对象键,且并不存在于JSON文本的指定对象中,则该路径值对将被作为新成员加入对应对象。
  • 若路径表述为数组下标,且处于JSON文本指定数组末尾之后,数组使用新值扩展。若JSON文本路径指定不为数组,则将其包装成数组,然后使用新值扩展。
  • 除了上述两类不存在的路径的路径值对都将被忽略。
  • 如果json_doc与任意path无效或path包含 * 或 ** 通配符,都将抛出错误。

函数返回类型

JSON数值类型

示例

sql
SQL> SELECT TO_CHAR(JSON_INSERT('["a", {"b": 1, "c": 2}]', '$[0]', 1, '$[1].d', 2, '$[4]', 3));

EXPR1 | 
------------------------------------------------------------------------------
["a", {"b": 1, "c": 2, "d": 2}, 3]|

-- 插入到数组
SQL> SELECT TO_CHAR(JSON_INSERT('[1, [2, 3], {"a": [4, 5]}]', '$[0]', 0, '$[3]', 6));

EXPR1 | 
------------------------------------------------------------------------------
[1, [2, 3], {"a": [4, 5]}, 6]|

-- 插入 JSON 类型数据
SQL> SELECT TO_CHAR(JSON_INSERT('{"x": 1}', '$.y', 'true'));

EXPR1 | 
------------------------------------------------------------------------------
{"x": 1, "y": "true"}|

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

EXPR1 | 
------------------------------------------------------------------------------
{"x": 1, "y": {"z": 2}}|