Oracle डाटाबेस में, JSON_VALUE() फ़ंक्शन JSON डेटा में एक निर्दिष्ट स्केलर JSON मान ढूंढता है और इसे SQL मान के रूप में लौटाता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_VALUE
( expr [ FORMAT JSON ], JSON_basic_path_expression
[ JSON_value_returning_clause ] [ JSON_value_on_error_clause ]
[ JSON_value_on_empty_clause ][ JSON_value_on_mismatch_clause ]
) कहां:
exprJSON दस्तावेज़ है जिसे आप क्वेरी करना चाहते हैंJSON_basic_path_expressionSQL/JSON पथ व्यंजक है। इस पाथ एक्सप्रेशन का इस्तेमालexpr. का मूल्यांकन करने के लिए किया जाता है और एक अदिश JSON मान ढूंढें जो पथ व्यंजक से मेल खाता हो या संतुष्ट करता हो।JSON_query_returning_clauseफ़ंक्शन द्वारा लौटाए गए मान के डेटा प्रकार और प्रारूप को निर्दिष्ट करता है।JSON_query_on_error_clauseकुछ त्रुटियाँ होने पर लौटाया गया मान निर्दिष्ट करता है।JSON_query_on_empty_clauseSQL/JSON पथ व्यंजक का उपयोग करके JSON डेटा का मूल्यांकन करने पर कोई मिलान नहीं मिलने पर लौटाया गया मान निर्दिष्ट करता है।JSON_value_on_mismatch_clauseअतिरिक्त डेटा, अनुपलब्ध डेटा, और प्रकार त्रुटियों जैसे त्रुटि मामलों के लिए अनदेखा, त्रुटि, या शून्य निर्दिष्ट करने के लिए उपयोग किया जा सकता है। इसे आम तौर पर लागू किया जा सकता है, या मामला दर मामला।
वैकल्पिक खंडों की विस्तृत व्याख्या के लिए Oracle दस्तावेज़ देखें।
उदाहरण
यह दिखाने के लिए एक उदाहरण यहां दिया गया है कि JSON_VALUE() . कैसे फ़ंक्शन काम करता है:
SELECT
JSON_VALUE('{a:1, b:2, c:3}', '$.b')
FROM DUAL; परिणाम:
2
इस मामले में मैंने $.b . निर्दिष्ट किया है b . पर अदिश मान लौटाने के लिए ।
यहां किसी सरणी से मान लौटाने का एक उदाहरण दिया गया है:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[2]')
FROM DUAL; परिणाम:
c
सरणी शून्य-आधारित हैं, और इसलिए $[2] तीसरा सरणी तत्व देता है।
त्रुटि प्रबंधन
ऐसे तीन खंड हैं जिनका उपयोग आप यह निर्दिष्ट करने के लिए कर सकते हैं कि कुछ प्रकार की त्रुटियां होने पर क्या लौटाया जाए। खंड हैं:
NULLONERROR- त्रुटि होने पर शून्य लौटाता है। यह डिफ़ॉल्ट है।ERRORONERROR- त्रुटि होने पर उपयुक्त Oracle त्रुटि लौटाता है।DEFAULTliteralONERROR- रिटर्नliteralजब कोई त्रुटि होती है। डेटा प्रकारliteralफ़ंक्शन द्वारा दिए गए मान के डेटा प्रकार से मेल खाना चाहिए।
यहां एक उदाहरण दिया गया है:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' NULL ON ERROR) AS "r1",
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Oops!' ON ERROR) AS "r2"
FROM DUAL; परिणाम:
r1 r2 _______ ________ null Oops!
यहाँ यह ERROR ON ERROR . के साथ है खंड:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' ERROR ON ERROR)
FROM DUAL; परिणाम:
Error report - ORA-40462: JSON_VALUE evaluated to no value
उपरोक्त त्रुटि खंड निम्नलिखित त्रुटियों को संभालने के लिए हैं:
- पहला तर्क सख्त या शिथिल JSON सिंटैक्स का उपयोग करके अच्छी तरह से गठित JSON डेटा नहीं है
- जब JSON डेटा का मूल्यांकन SQL/JSON पथ व्यंजक का उपयोग करके किया जाता है, तो एक गैर-स्केलर मान पाया जाता है
- जब JSON डेटा का मूल्यांकन SQL/JSON पथ व्यंजक का उपयोग करके किया जाता है, तो कोई मिलान नहीं मिलता है। आप
JSON_value_on_empty_clauseनिर्दिष्ट करके इस प्रकार की त्रुटि के व्यवहार को ओवरराइड कर सकते हैं । - रिटर्न वैल्यू डेटा टाइप इतना बड़ा नहीं है कि रिटर्न वैल्यू होल्ड कर सके
खाली परिणामों को संभालना
यदि कोई मिलान नहीं मिलता है तो आप दिए गए मान को निर्दिष्ट करने के लिए क्लॉज का भी उपयोग कर सकते हैं। यह खंड आपको इस प्रकार की त्रुटि के लिए त्रुटि खंड के साथ निर्दिष्ट परिणाम से भिन्न परिणाम निर्दिष्ट करने की अनुमति देता है।
ये खंड हैं:
NULLONEMPTY- कोई मिलान नहीं मिलने पर शून्य हो जाता है।ERRORONEMPTY- कोई मिलान नहीं मिलने पर उपयुक्त Oracle त्रुटि लौटाता है।DEFAULTliteralONEMPTY- रिटर्नliteralजब कोई मेल नहीं मिला। डेटा प्रकारliteralइस फ़ंक्शन द्वारा लौटाए गए मान के डेटा प्रकार से मेल खाना चाहिए।
उदाहरण:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL; परिणाम:
Dang!
यदि आप इस खंड को छोड़ देते हैं, तो त्रुटि खंड कोई मिलान नहीं मिलने पर लौटाया गया मान निर्धारित करता है।