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)) )
);