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