メインコンテンツまでスキップ
バージョン: 2.1

JSON_SET

デスクリプション

json_set関数は、JSONにデータを挿入または更新し、結果を返します。

Syntax

JSON_SET (<json_str>,  <path>,  <val> [, <path>,  <val>, ...])

パラメータ

パラメータ説明
<jsonStr>挿入するJSONオブジェクト。NULLを含む任意の型の要素を持つJSONオブジェクトにすることができます。要素が指定されていない場合、空の配列が返されます。json_strが有効なJSONでない場合、またはいずれかのパスパラメータが有効なパス式でない場合や*ワイルドカードを含む場合、エラーが返されます。
<jsonPath>挿入するJSONパス。NULLの場合、NULLを返します。
<val>JSONに挿入する値。NULLの場合、対応する位置にNULL値が挿入されます。

戻り値

JSON値を返します。

json_set関数はJSONにデータを挿入または更新し、結果を返します。json_strまたはpathがNULLの場合はNULLを返します。それ以外の場合、json_str引数が有効なJSONでない場合、またはいずれかのパス引数が有効なパス式でない場合や*ワイルドカードを含む場合、エラーが発生します。

パス-値のペアは左から右に評価されます。

json内の既存のパスに対するパス-値のペアは、既存のjson値を新しい値で上書きします。json内の存在しないパスに対するパス-値のペアは、パスが以下のタイプのいずれかの値を識別する場合、jsonに値を追加します:

  • 既存のオブジェクトに存在しないメンバー。メンバーはオブジェクトに追加され、新しい値に関連付けられます。

  • 既存の配列の末尾を超えた位置。配列は新しい値で拡張されます。既存の値が配列でない場合、配列として自動的にラップされ、その後新しい値で拡張されます。

それ以外の場合、json内の存在しないパスに対するパス-値のペアは無視され、影響しません。

select json_set(null, null, null);
+------------------------------+
| json_set(NULL, NULL, 'NULL') |
+------------------------------+
| NULL |
+------------------------------+
select json_set('{"k": 1}', "$.k", 2);
+------------------------------------+
| json_set('{\"k\": 1}', '$.k', '2') |
+------------------------------------+
| {"k":2} |
+------------------------------------+
select json_set('{"k": 1}', "$.j", 2);
+------------------------------------+
| json_set('{\"k\": 1}', '$.j', '2') |
+------------------------------------+
| {"k":1,"j":2} |
+------------------------------------+