MySQLでは、JSON_ARRAY_INSERT() 関数は、配列に新しい値を挿入するために使用されます。
最初の引数としてJSONドキュメントを指定し、次に挿入するパス、次に挿入する値を指定します。
構文
構文は次のようになります:
JSON_INSERT(json_doc, path, val[, path, val] ...)
場所:
-
json_docJSONドキュメントです。 pathは、新しい値を挿入する要素のパスです。-
val挿入される新しい値です。
パスと値のペアは左から右に評価されます。 1つのペアを評価することによって作成されたドキュメントは、次のペアが評価される新しい値になります。
例1-基本的な使用法
実例を示します。
SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';
結果:
+--------------+ | Result | +--------------+ | [1, 4, 2, 3] | +--------------+
したがって、3番目の引数は、指定されたパスで配列に挿入されます。この場合、私は$[1]を使用します 2番目の要素を参照するパスの場合(JSON配列はゼロベースの番号付けを使用します–番号付けは0から始まります )。
例2–ネストされた配列
これは、別の配列内にネストされている配列に値を挿入する例です。
SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';
結果:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 5, 4]] | +-------------------+
ここでは、$[2][1]を使用します パスとして。 [2] 外側の配列の3番目の要素を指します。 [1] ネストされた配列の2番目の要素を指します。
例3–より大きなJSONドキュメント
この例では、(少し)大きいJSONドキュメントを使用しています。これは、配列がドキュメント内のどこにあるかによってパスがどのように変化するかを示しています。
SET @data = '{
"Person": {
"Name": "Homer",
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';
結果:
+----------------------------------------------------------------------------------+
| Result |
+----------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} |
+----------------------------------------------------------------------------------+