मारियाडीबी में, JSON_LENGTH()
एक अंतर्निहित फ़ंक्शन है जो JSON दस्तावेज़ की लंबाई लौटाता है।
जब आप इस फ़ंक्शन को कॉल करते हैं, तो आप JSON दस्तावेज़ को तर्क के रूप में प्रदान करते हैं। आप दस्तावेज़ के भीतर किसी मान की लंबाई वापस करने के लिए पथ तर्क भी प्रदान कर सकते हैं।
लंबाई इस प्रकार निर्धारित की जाती है:
- एक अदिश की लंबाई हमेशा 1 होती है।
- यदि कोई सरणी है, तो सरणी में तत्वों की संख्या।
- यदि कोई वस्तु है, तो वस्तु में सदस्यों की संख्या।
नेस्टेड सरणियों या वस्तुओं की लंबाई की गणना नहीं की जाती है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_LENGTH(json_doc[, path])
जहां json_doc
JSON दस्तावेज़ है, और path
एक वैकल्पिक तर्क है जो दस्तावेज़ के भीतर पथ निर्दिष्ट करता है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_LENGTH(@json_document);
परिणाम:
+-----------------------------+ | JSON_LENGTH(@json_document) | +-----------------------------+ | 3 | +-----------------------------+
पथ निर्दिष्ट करना
दस्तावेज़ में पथ निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_LENGTH(@json_document, '$.details');
परिणाम:
+------------------------------------------+ | JSON_LENGTH(@json_document, '$.details') | +------------------------------------------+ | 2 | +------------------------------------------+
जैसा कि उल्लेख किया गया है, यह नेस्टेड वस्तुओं की लंबाई की गणना नहीं करता है, इसलिए हमें 2
का परिणाम मिलता है ।
अगला उदाहरण एक स्तर नीचे जाता है और awards
. की लंबाई की गणना करता है वस्तु:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_LENGTH(@json_document, '$.details.awards');
परिणाम:
+-------------------------------------------------+ | JSON_LENGTH(@json_document, '$.details.awards') | +-------------------------------------------------+ | 3 | +-------------------------------------------------+
स्केलर
एक अदिश की लंबाई हमेशा 1
होती है :
SELECT JSON_LENGTH(
'{ "a" : 378, "b" : 45 }',
'$.a'
) AS Result;
परिणाम:
+--------+ | Result | +--------+ | 1 | +--------+
सरणी
यदि दस्तावेज़ एक सरणी है, JSON_LENGTH()
सरणी में तत्वों की संख्या की गणना करता है:
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"scores": [9, 7, 8, 10, 3]
}
';
SELECT JSON_LENGTH(@json_document, '$.scores');
परिणाम:
+-----------------------------------------+ | JSON_LENGTH(@json_document, '$.scores') | +-----------------------------------------+ | 5 | +-----------------------------------------+
गैर-मौजूद पथ
ऐसे पथ को पास करने से जो JSON दस्तावेज़ में मौजूद नहीं है NULL
. में परिणाम देता है ।
उदाहरण:
SET @json_document = '
{
"name": "Wag",
"type": "Dog"
}
';
SELECT JSON_LENGTH(@json_document, '$.oops');
परिणाम:
+---------------------------------------+ | JSON_LENGTH(@json_document, '$.oops') | +---------------------------------------+ | NULL | +---------------------------------------+
खाली वस्तुएं
यदि चयनित वस्तु खाली है, तो परिणाम 0
. है :
SELECT JSON_LENGTH('{}');
परिणाम:
+-------------------+ | JSON_LENGTH('{}') | +-------------------+ | 0 | +-------------------+
अशक्त तर्क
अगर कोई तर्क NULL
है , परिणाम NULL
. है :
SELECT
JSON_LENGTH(null) AS a,
JSON_LENGTH(null, '$.type') AS b,
JSON_LENGTH('{"a":1}', null) AS c;
परिणाम:
+------+------+------+ | a | b | c | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
गलत पैरामीटर गणना
तर्क न देने से त्रुटि होती है:
SELECT JSON_LENGTH();
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LENGTH'