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

JSON_INSERT

デスクリプション

JSON_INSERT関数は、JSONにデータを挿入し、結果を返すために使用されます。

Syntax

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

パラメータ

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

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

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

JSONに存在しないパスのパス-値ペアは、パスが以下のタイプの値のいずれかを識別する場合、JSONに値を追加します:

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

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

それ以外の場合、JSONに存在しないパスのパス-値ペアは無視され、効果はありません。

Return Values

JSON値を返します。

Examples

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