コンテンツにスキップ

JSONオブジェクトにキーと値のペアを挿入または更新します。

JSON_OBJECT_INSERT(<json_object>, <key>, <value>[, <update_flag>])
パラメーター 説明
<json_object> 入力のJSONオブジェクトです。
<key> 挿入または更新するキーです。
<value> キーに割り当てる値です。
<update_flag> 指定したキーがJSONオブジェクトにすでに存在する場合に、値を置き換えるかどうかを制御するブールフラグです。true の場合、キーがすでに存在すれば値を置き換えます。false(または省略)の場合、キーが存在するとエラーになります。

更新後のJSONオブジェクトを返します。

次の例では、既存のJSONオブジェクトに、値が3の新しいキー ‘c’ を挿入します。

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} │
└───────────────────────────────────────────────────────────────────┘

次の例では、更新フラグを true に設定せずに、既存のキー ‘a’ に値を挿入しようとした場合に発生するエラーを示します。

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)`