MariaDBでは、JSON_ARRAY_APPEND() JSONドキュメント内の指定された配列の最後に値を追加し、結果を返す組み込み関数です。
構文
構文は次のようになります:
JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)
json_docの場所 JSONドキュメント、path 値を追加する場所へのパスであり、value 追加する値です。
例
関数を示す例を次に示します。
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4); 結果:
+--------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4) | +--------------------------------------+ | [0, 1, 2, 3, 4] | +--------------------------------------+
この場合、値4 配列の最後に追加されました。
複数の値を追加
JSON_ARRAY_APPEND()への1回の呼び出しで複数の値を追加できます 。
例:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5); 結果:
+----------------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5) | +----------------------------------------------+ | [0, 1, 2, 3, 4, 5] | +----------------------------------------------+
複数のアレイ
JSON_ARRAY_APPEND()への同じ呼び出し内の複数の配列に値を追加できます 。
例:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5); 結果:
+--------------------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5) |
+--------------------------------------------------+
| {"a": [0, 1, 4], "b": [2, 3, 5]} |
+--------------------------------------------------+ ネストされた配列
ネストされた配列に値を追加する例を次に示します。
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4); 結果:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) | +-----------------------------------------+ | [0, 1, [2, 3, 4]] | +-----------------------------------------+
次の例では、元のJSONドキュメントにネストされた配列は含まれていませんが、JSON_ARRAY_APPEND() パスに基づいてネストされた配列を作成します:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4); 結果:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) | +-----------------------------------------+ | [0, 1, 2, [3, 4]] | +-----------------------------------------+
より大きなJSONドキュメント
これは、少し大きいJSONドキュメントの例です。
JSON_DETAILED()も使用します 結果を美しくするために:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Chicken"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet',
'Water')
); 結果:
{
"pet":
{
"name": "Fluffy",
"diet":
[
"Fish",
"Chicken",
"Water"
]
}
} そして、ネストされた配列を作成するものは次のとおりです。
SET @json_doc = '{
"pet": {
"name": "Scratch",
"diet": ["Beef", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet[1]',
'Beer')
); 結果:
{
"pet":
{
"name": "Scratch",
"diet":
[
"Beef",
[
"Water",
"Beer"
]
]
}
} ヌル引数
最初の引数がNULLの場合 、結果はNULLです :
SELECT JSON_ARRAY_APPEND(null, '$', 4); 結果:
+---------------------------------+ | JSON_ARRAY_APPEND(null, '$', 4) | +---------------------------------+ | NULL | +---------------------------------+
同じことがpathにも当てはまります 引数:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, null, 4); 結果:
+---------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, null, 4) | +---------------------------------------+ | NULL | +---------------------------------------+
ただし、value 引数はNULLです 、次にNULL 配列に追加されます:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', null); 結果:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', null) | +-----------------------------------------+ | [0, 1, 2, 3, null] | +-----------------------------------------+
JSON_ARRAY_INSERT()を使用することもできます 配列に値を挿入します。