Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

JSON_VALUE () Oracle में फ़ंक्शन

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

कहां:

  • expr JSON दस्तावेज़ है जिसे आप क्वेरी करना चाहते हैं
  • JSON_basic_path_expression SQL/JSON पथ व्यंजक है। इस पाथ एक्सप्रेशन का इस्तेमाल expr . का मूल्यांकन करने के लिए किया जाता है और एक अदिश JSON मान ढूंढें जो पथ व्यंजक से मेल खाता हो या संतुष्ट करता हो।
  • JSON_query_returning_clause फ़ंक्शन द्वारा लौटाए गए मान के डेटा प्रकार और प्रारूप को निर्दिष्ट करता है।
  • JSON_query_on_error_clause कुछ त्रुटियाँ होने पर लौटाया गया मान निर्दिष्ट करता है।
  • JSON_query_on_empty_clause SQL/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] तीसरा सरणी तत्व देता है।

त्रुटि प्रबंधन

ऐसे तीन खंड हैं जिनका उपयोग आप यह निर्दिष्ट करने के लिए कर सकते हैं कि कुछ प्रकार की त्रुटियां होने पर क्या लौटाया जाए। खंड हैं:

  • NULL ON ERROR - त्रुटि होने पर शून्य लौटाता है। यह डिफ़ॉल्ट है।
  • ERROR ON ERROR - त्रुटि होने पर उपयुक्त Oracle त्रुटि लौटाता है।
  • DEFAULT literal ON ERROR - रिटर्न 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 निर्दिष्ट करके इस प्रकार की त्रुटि के व्यवहार को ओवरराइड कर सकते हैं
  • रिटर्न वैल्यू डेटा टाइप इतना बड़ा नहीं है कि रिटर्न वैल्यू होल्ड कर सके

खाली परिणामों को संभालना

यदि कोई मिलान नहीं मिलता है तो आप दिए गए मान को निर्दिष्ट करने के लिए क्लॉज का भी उपयोग कर सकते हैं। यह खंड आपको इस प्रकार की त्रुटि के लिए त्रुटि खंड के साथ निर्दिष्ट परिणाम से भिन्न परिणाम निर्दिष्ट करने की अनुमति देता है।

ये खंड हैं:

  • NULL ON EMPTY - कोई मिलान नहीं मिलने पर शून्य हो जाता है।
  • ERROR ON EMPTY - कोई मिलान नहीं मिलने पर उपयुक्त Oracle त्रुटि लौटाता है।
  • DEFAULT literal ON EMPTY - रिटर्न literal जब कोई मेल नहीं मिला। डेटा प्रकार literal इस फ़ंक्शन द्वारा लौटाए गए मान के डेटा प्रकार से मेल खाना चाहिए।

उदाहरण:

SELECT 
    JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL;

परिणाम:

Dang!

यदि आप इस खंड को छोड़ देते हैं, तो त्रुटि खंड कोई मिलान नहीं मिलने पर लौटाया गया मान निर्धारित करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर को Oracle से कनेक्ट करना

  2. Oracle® . से Salesforce को अपडेट कर रहा है

  3. SQL अद्यतन अद्यतन चलाने के दौरान इसकी उपश्रेणी को प्रभावित करेगा?

  4. Oracle डेटाबेस रिकवरी

  5. गोद लेने के चरण में क्या होता है तैयारी