メインコンテンツまでスキップ
翻訳ページ

このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。

JSON_SET

JSON ドキュメントの指定したパスにある既存の値を更新するか、新しい値を挿入します。

関連項目:
[SELECT] [JSON_EXTRACT] [JSON_SET] [JSON_REPLACE]


構文​

SELECT JSON_SET(json_column, path, value_to_set) FROM <multipartIdentifier>;

引数​

json_column
変更する JSON 列または式。

path
値を設定する場所を示す JSON パス式。パスが存在する場合は値が更新され、パスが存在しない場合は新しいキーと値のペアが追加されます。

value_to_set
JSON ドキュメントの指定したパスに設定する値。

戻り値​

指定したパスに値を設定した JSON ドキュメントを返します。パスが存在する場合は既存の値が更新され、存在しない場合は新しいキーと値のペアが追加されます。

キーが存在する場合の動作
関数すでに存在する場合に上書きするか?存在しない場合に作成するか?
json_insert()いいえはい
json_replace()はいいいえ
json_set()はいはい

例​

JSON オブジェクトの既存の値を更新する​

-- Example: Update the 'status' key's value to 'active' in a JSON object
SELECT JSON_SET(json_data, '$.status', 'active') as updated_json
FROM cloud_services
WHERE service_id = 'service123';

-- Expected output:
-- |---------------------------------------------------------|
-- | updated_json |
-- |---------------------------------------------------------|
-- | {"name":"ServiceOne", "status":"active", "region":"US"} |
-- |---------------------------------------------------------|

このクエリは、'status' キーが存在する場合、JSON ドキュメントの 'status' キーを 'active' に更新します。ドキュメントに 'status' が存在しない場合は、値 'active' で追加されます。

JSON オブジェクトに新しいキーと値のペアを追加する​

-- Example: Add a new key 'lastChecked' with the current date to a JSON object
SELECT JSON_SET(json_data, '$.lastChecked', '2024-04-29') as updated_json
FROM cloud_services
WHERE service_id = 'service123';

/* expected output...
|-----------------------------------------------------------------------|
| updated_json |
|-----------------------------------------------------------------------|
| {"name":"ServiceOne", "status":"pending", "lastChecked":"2024-04-29"} |
|-----------------------------------------------------------------------|
*/

このクエリは、'lastChecked' がまだ存在しない場合、値が '2024-04-29' の新しいキー 'lastChecked' を JSON ドキュメントに追加します。すでに存在する場合は、既存の値が '2024-04-29' に更新されます。