説明
この関数は、データを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ペアが存在しない場合、その値がドキュメントに追加されます。
既存のオブジェクトに存在しないメンバー。このメンバーはオブジェクトに追加され、新しい値と関連付けられます。
既存の配列の末尾を超える位置。この場合、新しい値を使用して配列を拡張します。既存の値が配列でない場合、自動的に配列としてラップされ、新しい値を使用して拡張されます。
それ以外の場合、ドキュメント内に存在しないパスのパス値ペアは無視され、無効です。
例
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