跳到主要内容

JSON_OBJECT_INSERT

引入或更新: v1.2.647

在 JSON 对象中插入或更新一个键值对。

语法

JSON_OBJECT_INSERT(<json_object>, <key>, <value>[, <update_flag>])
参数描述
<json_object>输入的 JSON 对象。
<key>要插入或更新的键。
<value>要分配给键的值。
<update_flag>一个布尔标志,控制是否替换 JSON 对象中已存在的指定键的值。如果为 true,函数会替换已存在键的值。如果为 false(或省略),如果键已存在,则会报错。

返回类型

返回更新后的 JSON 对象。

示例

此示例演示如何将新键 'c' 及其值 3 插入到现有的 JSON 对象中:

SELECT JSON_OBJECT_INSERT('{"a":1,"b":2,"d":4}'::variant, 'c', 3);

┌────────────────────────────────────────────────────────────┐
│ json_object_insert('{"a":1,"b":2,"d":4}'::VARIANT, 'c', 3)
├────────────────────────────────────────────────────────────┤
│ {"a":1,"b":2,"c":3,"d":4} │
└────────────────────────────────────────────────────────────┘

此示例展示了如何使用更新标志设置为 true,将现有键 'a' 的值从 1 更新为 10,允许替换键的值:

SELECT JSON_OBJECT_INSERT('{"a":1,"b":2,"d":4}'::variant, 'a', 10, true);

┌───────────────────────────────────────────────────────────────────┐
│ json_object_insert('{"a":1,"b":2,"d":4}'::VARIANT, 'a', 10, TRUE)
├───────────────────────────────────────────────────────────────────┤
│ {"a":10,"b":2,"d":4} │
└───────────────────────────────────────────────────────────────────┘

此示例演示了在尝试为现有键 'a' 插入值时,未指定更新标志设置为 true 时发生的错误:

SELECT JSON_OBJECT_INSERT('{"a":1,"b":2,"d":4}'::variant, 'a', 10);

error: APIError: ResponseError with 1006: ObjectDuplicateKey while evaluating function `json_object_insert('{"a":1,"b":2,"d":4}', 'a', 10)` in expr `json_object_insert('{"a":1,"b":2,"d":4}', 'a', 10)`
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册