MySQL में, JSON_VALUE() फ़ंक्शन निर्दिष्ट पथ पर JSON दस्तावेज़ से एक मान निकालता है।
फ़ंक्शन को MySQL 8.0.21 में पेश किया गया था।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error]) कहां:
on_empty:
{NULL | ERROR | DEFAULT value} ON EMPTY
on_error:
{NULL | ERROR | DEFAULT value} ON ERROR उदाहरण
प्रदर्शित करने के लिए यहां एक सरल उदाहरण दिया गया है:
SELECT JSON_VALUE( '{ "name" : "Wag", "type" : "Dog" }', '$.type' ); परिणाम:
Dog
सरणी
किसी सरणी से मान प्राप्त करने का एक उदाहरण यहां दिया गया है:
SELECT JSON_VALUE( '{ "name" : "Wag", "scores" : [ 25, 36, 48 ] }', '$.scores[1]' ); परिणाम:
36
सरणी शून्य आधारित हैं, इसलिए 1 दूसरा तत्व लौटाता है (0 पहला लौटाएगा)।
एम्बेडेड दस्तावेज़
एम्बेडेड ऑब्जेक्ट से मान प्राप्त करने का एक उदाहरण यहां दिया गया है:
SELECT JSON_VALUE(
'{
"_id" : 1,
"details" : {
"name" : "Wag",
"type" : "Dog"
}
}',
'$.details.type'
); परिणाम:
Dog
वापसी का प्रकार
यहां रिटर्न प्रकार निर्दिष्ट करने का एक उदाहरण दिया गया है:
SELECT JSON_VALUE(
'{
"_id" : 1,
"details" : {
"name" : "Wag",
"type" : "Dog"
}
}',
'$.details' RETURNING json
); परिणाम:
{"name": "Wag", "type": "Dog"}
यदि आप रिटर्न प्रकार निर्दिष्ट नहीं करते हैं, तो रिटर्न प्रकार VARCHAR(512) . है ।
रिक्त परिणाम
डिफ़ॉल्ट रूप से, यदि निर्दिष्ट पथ पर कोई डेटा नहीं मिलता है, NULL लौटा दिया गया है:
SELECT JSON_VALUE(
'{
"name" : "Wag",
"type" : "Dog"
}',
'$.score'
); परिणाम:
NULL
हालांकि, निम्नलिखित विकल्पों का उपयोग स्पष्ट रूप से निर्दिष्ट करने के लिए किया जा सकता है कि दिए गए पथ पर कोई डेटा नहीं मिलने पर क्या होना चाहिए:
NULL ON EMPTY:फ़ंक्शनNULLलौटाता है; यह डिफ़ॉल्ट व्यवहार है।DEFAULT:प्रदान किया गयाvalueखाली परvalueवापस किया जाता है। मान का प्रकार रिटर्न प्रकार से मेल खाना चाहिए।ERROR ON EMPTY:फ़ंक्शन एक त्रुटि फेंकता है।
उदाहरण:
SELECT JSON_VALUE(
'{
"name" : "Wag",
"type" : "Dog"
}',
'$.score'
DEFAULT 'Nothing found' ON EMPTY
); परिणाम:
Nothing found
त्रुटियां
त्रुटि होने पर क्या होता है, यह निर्दिष्ट करने के लिए निम्नलिखित का उपयोग किया जा सकता है:
NULL ON ERROR:JSON_VALUE()रिटर्नNULL; यह डिफ़ॉल्ट व्यवहार है।DEFAULT:यह लौटाया गया मान है; इसका मान वापसी प्रकार से मेल खाना चाहिए।valueत्रुटि परERROR ON ERROR:एक त्रुटि हुई है।
यदि उपयोग किया जाता है, तो ON EMPTY किसी भी ON ERROR . से पहले होना चाहिए खंड। उन्हें गलत क्रम में निर्दिष्ट करने से सिंटैक्स त्रुटि होती है।
सूचकांक
जैसा कि MySQL 8.0.21 रिलीज नोट्स में बताया गया है, JSON_VALUE() फ़ंक्शन JSON . पर अनुक्रमणिका के निर्माण को सरल बनाता है स्तंभ। JSON_VALUE( कॉल करने के बराबर है json_doc . पर एक कॉल , path रिटर्निंग type )CAST( JSON_UNQUOTE( JSON_EXTRACT( ।json_doc) , path ) ) AS type )
रिलीज़ नोट्स में इस्तेमाल किया गया उदाहरण यहां दिया गया है:
CREATE TABLE inventory(
items JSON,
INDEX i1 ( (JSON_VALUE(items, '$.name' RETURNING CHAR(50))) ),
INDEX i2 ( (JSON_VALUE(items, '$.price' RETURNING DECIMAL(5,2))) ),
INDEX i3 ( (JSON_VALUE(items, '$.quantity' RETURNING UNSIGNED)) )
);