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

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

Oracle डाटाबेस में, JSON_TABLE() फ़ंक्शन JSON डेटा का एक संबंधपरक दृश्य बनाता है। यह आपको JSON दस्तावेज़ में मानों को तालिका प्रारूप में - पंक्तियों और स्तंभों के रूप में प्रस्तुत करने की अनुमति देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

JSON_TABLE
  ( expr [ FORMAT JSON ] [ , JSON_basic_path_expression ]
    [ JSON_table_on_error_clause ] [ JSON_table_on_empty_clause ] 
    JSON_columns_clause )

कहां:

  • expr JSON दस्तावेज़ है जिसे आप क्वेरी करना चाहते हैं
  • JSON_basic_path_expression SQL/JSON पथ व्यंजक है।
  • JSON_query_on_error_clause कुछ त्रुटियाँ होने पर लौटाया गया मान निर्दिष्ट करता है।
  • JSON_query_on_empty_clause यदि कोई मिलान नहीं मिलता है तो लौटाया गया मान निर्दिष्ट करता है।
  • JSON_columns_clause फ़ंक्शन द्वारा लौटाए गए वर्चुअल रिलेशनल टेबल में कॉलम को परिभाषित करता है।

JSON_TABLE() फ़ंक्शन का उपयोग केवल FROM . में किया जा सकता है SELECT . का खंड बयान।

उदाहरण

यह कैसे काम करता है यह दिखाने के लिए यहां एक उदाहरण दिया गया है:

SELECT *
FROM JSON_TABLE('{a:1, b:2, c:3}', '$' COLUMNS(a, b, c));

परिणाम:

   A    B    C 
____ ____ ____ 
1    2    3    

यहाँ यह थोड़ा और डेटा के साथ है:

SELECT *
FROM JSON_TABLE(
    '[{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]', 
    '$[*]' 
    COLUMNS(a, b, c)
    );

परिणाम:

   A    B    C 
____ ____ ____ 
1    2    3    
4    5    6    
7    8    9   

कम कॉलम

यदि हम COLUMNS . में निर्दिष्ट स्तंभों की संख्या कम कर देते हैं, तो यहां क्या होता है? खंड:

SELECT *
FROM JSON_TABLE(
    '[{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]', 
    '$[*]' 
    COLUMNS(a, b)
    );

परिणाम:

   A    B 
____ ____ 
1    2    
4    5    
7    8    

हम SELECT . में चयनित कॉलम निर्दिष्ट करके समान परिणाम प्राप्त कर सकते हैं सूची:

SELECT a, b
FROM JSON_TABLE(
    '[{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]', 
    '$[*]' 
    COLUMNS(a, b, c)
    );

परिणाम:

   A    B 
____ ____ 
1    2    
4    5    
7    8    

विशिष्ट पंक्तियों का चयन करें

हम WHERE . जैसे खंडों का उपयोग कर सकते हैं केवल उन पंक्तियों का चयन करने के लिए जो एक निश्चित मानदंड को पूरा करती हैं:

SELECT *
FROM JSON_TABLE(
    '[{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]', 
    '$[*]' 
    COLUMNS(a, b, c)
    )
WHERE b = 5;

परिणाम:

   A    B    C 
____ ____ ____ 
4    5    6    

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

त्रुटियों से निपटने के लिए हम निम्नलिखित खंडों का उपयोग कर सकते हैं:

  • NULL ON ERROR
    • यदि इनपुट अच्छी तरह से गठित JSON नहीं है, तो उस बिंदु से कोई और पंक्तियाँ नहीं लौटाई जाती हैं जहाँ त्रुटि का पता चलता है।
    • यदि पंक्ति पथ व्यंजक का मूल्यांकन करते समय कोई मिलान नहीं मिलता है, तो कोई पंक्तियाँ वापस नहीं की जाती हैं।
    • सभी स्तंभ अभिव्यक्तियों के लिए डिफ़ॉल्ट त्रुटि व्यवहार को NULL ON ERROR पर सेट करता है
  • ERROR ON ERROR
    • यदि इनपुट अच्छी तरह से तैयार JSON नहीं है, तो एक त्रुटि उत्पन्न होती है।
    • यदि पंक्ति पथ अभिव्यक्ति का मूल्यांकन करते समय कोई मिलान नहीं मिलता है, तो एक त्रुटि उत्पन्न होगी
    • सभी स्तंभ अभिव्यक्तियों के लिए डिफ़ॉल्ट त्रुटि व्यवहार को ERROR ON ERROR पर सेट करता है

यहां NULL ON ERROR का एक उदाहरण दिया गया है :

SELECT *
FROM JSON_TABLE(
    '[{a:1, b:2, c:3}, {a:4, b:5, c:6}, a:7, b:8, c:9]', 
    '$[*]'
    NULL ON ERROR
    COLUMNS(a, b, c)
    );

परिणाम:

   A    B    C 
____ ____ ____ 
1    2    3    
4    5    6    

चूंकि JSON_TABLE() फ़ंक्शन स्ट्रीमिंग मूल्यांकन का समर्थन करता है, त्रुटि के साथ इनपुट के हिस्से का सामना करने से पहले पंक्तियों को वापस किया जा सकता है। ठीक यही हम इस उदाहरण से देख सकते हैं - हमें पहली दो पंक्तियाँ मिलीं, लेकिन तीसरी नहीं (JSON के उस हिस्से के अच्छी तरह से गठित JSON नहीं होने के कारण)।

यहाँ यह ERROR ON ERROR . के साथ है खंड:

SELECT *
FROM JSON_TABLE(
    '[{a:1, b:2, c:3}, {a:4, b:5, c:6}, a:7, b:8, c:9]', 
    '$[*]'
    ERROR ON ERROR
    COLUMNS(a, b, c)
    );

परिणाम:

Error report -
ORA-40441: JSON syntax error

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

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

ये खंड हैं:

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

JSON_TABLE() . के बारे में अधिक जानकारी के लिए Oracle दस्तावेज़ देखें समारोह।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वर्ग में प्रत्येक समूह की पहली पंक्ति का चयन करें

  2. Oracle SQL विश्लेषणात्मक क्वेरी - पुनरावर्ती स्प्रेडशीट की तरह कुल चल रहा है

  3. Oracle डाटाबेस में PL/SQL कमजोर रेफ कर्सर कैसे बनाएं?

  4. के साथ Rownum फ़ंक्शन का उपयोग करना> oracle में साइन इन करें

  5. मेरा अमान्य वर्ण कहां है (ORA-00911)