मारियाडीबी में, JSON_KEYS()
एक अंतर्निहित फ़ंक्शन है जो JSON दस्तावेज़ से शीर्ष-स्तरीय कुंजियों की एक सरणी देता है। यदि कोई पथ प्रदान किया जाता है, तो वह उस पथ से शीर्ष-स्तरीय कुंजियाँ लौटाता है।
यह निर्दिष्ट स्तर में नेस्टेड उप-ऑब्जेक्ट्स की कुंजियों को बाहर करता है।
साथ ही, यदि चयनित ऑब्जेक्ट खाली है, तो एक खाली सरणी वापस कर दी जाती है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_KEYS(json_doc[, path])
जहां json_doc
JSON दस्तावेज़ है, और path
दस्तावेज़ के भीतर एक पथ है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
परिणाम:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
पथ निर्दिष्ट करना
दस्तावेज़ में पथ निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
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_KEYS(
@json_document,
'$.details'
) AS Result;
परिणाम:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
जैसा कि उल्लेख किया गया है, उप-वस्तुओं को परिणाम से बाहर रखा गया है।
गैर-मौजूद पथ
एक पथ पास करना जो JSON दस्तावेज़ में मौजूद नहीं है NULL
. में परिणाम देता है ।
उदाहरण:
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_KEYS(
@json_document,
'$.wrong'
) AS Result;
परिणाम:
+--------+ | Result | +--------+ | NULL | +--------+
खाली वस्तुएं
यदि चयनित ऑब्जेक्ट खाली है, तो एक खाली सरणी लौटा दी जाती है:
SELECT JSON_KEYS('{}');
परिणाम:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
अशक्त तर्क
अगर कोई तर्क NULL
है , परिणाम NULL
. है :
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
परिणाम:
+-----------------+---------------------------+----------------------------+ | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) | +-----------------+---------------------------+----------------------------+ | NULL | NULL | NULL | +-----------------+---------------------------+----------------------------+
गलत पैरामीटर गणना
तर्क न देने से त्रुटि होती है:
SELECT JSON_KEYS();
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
जब आप बहुत कम या बहुत अधिक तर्क देते हैं तो ऐसा ही होता है:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'