説明
この関数は、JSONドキュメントにデータを挿入し、結果を返します。
構文
JSON_INSERT(json_doc, path, val[, path, val] ...)
説明
json_doc パラメータはJSONドキュメントを指定するために使用され、path はパスパラメータです。いずれかのパラメータが NULL の場合、NULL を返します。
以下の場合、エラーが発生します:
json_docパラメータが有効なJSONドキュメントではない場合。pathパラメータが有効なパス式ではない場合。pathパラメータに * または ** ワイルドカードが含まれている場合。
パス値のペア path-value は、左から右の順に評価されます。path-value ペアによって生成されたドキュメントが、次のペアの新しい値として評価されます。
ドキュメント内の既存のパスの path-value ペアは無視され、既存のドキュメントの値は上書きされません。パスが以下のいずれかのタイプの値を認識した場合、ドキュメント内にそのパスの path-value ペアが存在しない場合、その値がドキュメントに追加されます:
既存のオブジェクトに存在しないメンバー。このメンバーはオブジェクトに追加され、新しい値と関連付けられます。
既存の配列の末尾を超える位置。この場合、新しい値で配列を拡張します。既存の値が配列でない場合、自動的に配列としてラッピングされ、新しい値で拡張されます。
それ以外の場合、ドキュメント内に存在しないパスの path-value ペアは無視され、無効となります。
例
obclient> SET @jn = '{ "a": 1, "b": [2, 3]}';
Query OK, 0 rows affected
obclient> SELECT JSON_INSERT(@jn, '$.a', 10, '$.c', '[true, false]');
+-----------------------------------------------------+
| JSON_INSERT(@jn, '$.a', 10, '$.c', '[true, false]') |
+-----------------------------------------------------+
| {"a": 1, "b": [2, 3], "c": "[true, false]"} |
+-----------------------------------------------------+
1 row in set