説明
この関数は、JSONドキュメントにデータを挿入または更新し、結果を返します。
構文
JSON_SET(json_doc, path, val[, path, val] ...)
説明
json_doc パラメータはJSONドキュメントを指定するために使用され、path はパスパラメータです。いずれかのパラメータが NULL である場合、または path(指定されている場合)でオブジェクトが見つからない場合、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_SET(@jn, '$.a', 10, '$.c', '[true, false]');
+--------------------------------------------------+
| JSON_SET(@jn, '$.a', 10, '$.c', '[true, false]') |
+--------------------------------------------------+
| {"a": 10, "b": [2, 3], "c": "[true, false]"} |
+--------------------------------------------------+
1 row in set