MariaDBでは、 JSON_ARRAY_INSERT() は、JSONドキュメントに値を挿入し、結果を返す組み込み関数です。
構文
構文は次のようになります:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
json_docの場所 JSONドキュメント、 path 値を挿入する場所へのパスであり、 value 挿入する値です。
例
実例を示します。
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); 結果:
+-------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
+-------------------------------------------+
| [0, 3, 1, 2] |
+-------------------------------------------+
この場合、値 3 配列の1の位置に挿入されました 。配列はゼロベースであるため、配列の2番目の要素になります。
複数の値を挿入
JSON_ARRAY_INSERT()への1回の呼び出しで複数の値を挿入できます 。
例:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); 結果:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
+------------------------------------------------------+
| [4, 0, 5, 1, 2] |
+------------------------------------------------------+ 評価は左から右に行われます。
pathを切り替えるとどうなりますか /値コード> 周りの議論:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); 結果:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
+------------------------------------------------------+
| [4, 0, 1, 5, 2] |
+------------------------------------------------------+ 複数のアレイ
JSON_ARRAY_INSERT()への同じ呼び出し内で、複数の配列に値を挿入できます。 。
例:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); 結果:
+--------------------------------------------------------+
| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |
+--------------------------------------------------------+
| {"a": [0, 4, 1], "b": [2, 3, 5]} |
+--------------------------------------------------------+ ネストされた配列
ネストされた配列に値を挿入する例を次に示します。
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); 結果:
+--------------------------------------------+ | JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) | +--------------------------------------------+ | [0, 1, [2, 4, 3]] | +--------------------------------------------+
より大きなJSONドキュメント
これは、少し大きいJSONドキュメントの例です。
JSON_DETAILED()も使用します 結果を美しくするために:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
); 結果:
{
"pet":
{
"name": "Fluffy",
"diet":
[
"Fish",
"Chicken",
"Water"
]
}
} ヌル引数
最初の引数がNULLの場合 、結果は NULLです :
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); 結果:
+------------------------------------+ | JSON_ARRAY_INSERT(null, '$[1]', 4) | +------------------------------------+ | NULL | +------------------------------------+
同じことがpathにも当てはまります 引数:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); 結果:
+--------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
ただし、 value 引数はNULLです 、次に NULL 配列に挿入されます:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); 結果:
+----------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
+----------------------------------------------+
| [0, null, 1, 2] |
+----------------------------------------------+
JSON_ARRAY_APPEND()を使用することもできます 配列に値を追加します。