मारियाडीबी में, 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'