JSON_OBJECT_INSERT (Lakehouse v1)
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)`