翻訳ページ
このページは 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' に更新されます。