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()
を使用することもできます 配列に値を追加します。