OBJECT_INSERT
在 JSON 对象中插入或修改一个键值对。
别名
JSON_OBJECT_INSERT
语法
OBJECT_INSERT(<json_object>, <key>, <value>[, <update_flag>])
返回类型
返回修改后的 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)`