MariaDBでは、JSON_QUERY()
は、提供されたパスに基づいて、JSONドキュメントからオブジェクトまたは配列を返す組み込み関数です。
JSON_VALUE()
に似ています スカラーの代わりにオブジェクトまたは配列を返すことを除いて、関数(JSON_VALUE()
スカラーを返します。
構文
構文は次のようになります:
JSON_QUERY(json_doc, path)
json_doc
の場所 はJSONドキュメントであり、path
ドキュメント内のパスです。
例
実例を示します。
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_QUERY(@json_document, '$.details');
結果:
{ "type" : "Dog", "weight" : 20, "awards" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" } }
ドット表記を使用して、次のネストされたオブジェクトに移動できます:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_QUERY(@json_document, '$.details.awards');
結果:
{ "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" }
配列
配列を返す例を次に示します。
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.awards');
結果:
+------------------------------------------+ | JSON_QUERY(@json_document, '$.awards') | +------------------------------------------+ | [ "Top Dog", "Best Dog", "Biggest Dog" ] | +------------------------------------------+
実際の配列要素を返したい場合は、JSON_VALUE()
を試してください。 機能。
存在しないパス
JSONドキュメントに存在しないパスを渡すと、NULL
になります 。
例:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.type');
結果:
+--------------------------------------+ | JSON_QUERY(@json_document, '$.type') | +--------------------------------------+ | NULL | +--------------------------------------+
スカラー値
スカラー値を返そうとすると、NULL
が返されます 。
例:
SELECT JSON_QUERY('{ "weight": 10 }', '$.weight');
結果:
+--------------------------------------------+ | JSON_QUERY('{ "weight": 10 }', '$.weight') | +--------------------------------------------+ | NULL | +--------------------------------------------+
スカラー値を返すには、JSON_VALUE()
を使用します 機能。
ヌル引数
引数がNULL
の場合 、結果はNULL
です :
SELECT
JSON_QUERY(null, '$.type'),
JSON_QUERY('{"a":1}', null);
結果:
+----------------------------+-----------------------------+ | JSON_QUERY(null, '$.type') | JSON_QUERY('{"a":1}', null) | +----------------------------+-----------------------------+ | NULL | NULL | +----------------------------+-----------------------------+
パラメータカウントが正しくありません
引数を指定しないとエラーが発生します:
SELECT JSON_QUERY();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_QUERY'
提供する引数が少なすぎても多すぎても同じです:
SELECT JSON_QUERY('{ "a": 1}');
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_QUERY'