📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

OBJECT_INSERT



在 JSON 对象中插入或修改一个键值对。

别名

  • JSON_OBJECT_INSERT

语法

OBJECT_INSERT(<json_object>, <key>, <value>[, <update_flag>])
参数描述
<json_object>输入的 JSON 对象。
<key>要插入或修改的键。
<value>要赋给该键的值。
<update_flag>一个布尔(命令行)标记/参数,用于控制当指定键已存在于 JSON 对象中时是否替换其值。如果为 true,则当键已存在时,函数会替换该值。如果为 false(或省略),则如果该键已存在会报错。

返回类型

返回修改后的 JSON 对象。

示例

以下示例演示如何在现有 JSON 对象中插入一个新键 'c',其值为 3:

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

以下示例展示如何在将 update flag 设置为 true 的情况下,把现有键 'a' 的值从 1 修改为 10,从而允许替换该键的值:

SELECT OBJECT_INSERT('{"a":1,"b":2,"d":4}'::variant, 'a', 10, true); ┌───────────────────────────────────────────────────────────────────┐ │ object_insert('{"a":1,"b":2,"d":4}'::VARIANT, 'a', 10, TRUE) │ ├───────────────────────────────────────────────────────────────────┤ │ {"a":10,"b":2,"d":4} │ └───────────────────────────────────────────────────────────────────┘

以下示例演示了当尝试为已存在的键 'a' 插入值、但未将 update flag 指定为 true 时发生的错误:

SELECT OBJECT_INSERT('{"a":1,"b":2,"d":4}'::variant, 'a', 10); error: APIError: ResponseError with 1006: ObjectDuplicateKey while evaluating function `object_insert('{"a":1,"b":2,"d":4}', 'a', 10)` in expr `object_insert('{"a":1,"b":2,"d":4}', 'a', 10)`

文档内容是否有帮助?