Oracle डाटाबेस में, JSON_OBJECTAGG()
फ़ंक्शन की-वैल्यू पेयर से JSON ऑब्जेक्ट बनाता है।
सामान्यतया, गुण कुंजी, गुण मान, या दोनों SQL अभिव्यक्तियों के स्तंभ हैं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_OBJECTAGG
( [ KEY ] string VALUE expr [ FORMAT JSON ]
[ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
[ STRICT ] [ WITH UNIQUE KEYS ]
)
कहां:
[ KEY ] key_expr VALUE val_expr
गुण कुंजी-मान युग्म निर्दिष्ट करता है।FORMAT JSON
इंगित करता है कि इनपुट स्ट्रिंग JSON है, और इसलिए इसे आउटपुट में उद्धृत नहीं किया जाएगा।JSON_on_null_clause
उपयोग करने के लिए व्यवहार निर्दिष्ट करता है जबexpr
शून्य के बराबर है (यानी या तो आउटपुट में शून्य मान शामिल करें या नहीं)।JSON_returning_clause
वापसी मूल्य के प्रकार को निर्दिष्ट करता है।STRICT
जाँचता है कि JSON जनरेशन फ़ंक्शन का आउटपुट सही JSON है या नहीं। यदि चेक विफल हो जाता है, तो सिंटैक्स त्रुटि उत्पन्न हो जाती है।WITH UNIQUE KEYS
गारंटी देता है कि जनरेट किए गए JSON ऑब्जेक्ट में अद्वितीय कुंजियाँ होती हैं।
उदाहरण
यह कैसे काम करता है यह दिखाने के लिए यहां एक उदाहरण दिया गया है:
DUAL सेSELECT JSON_OBJECTAGG(KEY 'score' VALUE 37) FROM DUAL;
परिणाम:
{"score":37}
KEY
भाग वैकल्पिक है, इसलिए निम्नलिखित समान परिणाम प्राप्त करता है:
SELECT JSON_OBJECTAGG('score' VALUE 37) FROM DUAL;
परिणाम:
{"score":37}
नेस्टेड JSON
यदि आपके द्वारा पास किए गए मानों में से एक में JSON है, तो आप FORMAT JSON
. का उपयोग कर सकते हैं यह निर्दिष्ट करने के लिए तर्क कि इसमें JSON है और इसे आउटपुट में उद्धृत नहीं किया जाना चाहिए।
उदाहरण:
SELECT JSON_OBJECTAGG(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
परिणाम:
{"details":{"name": "Peter", "score": 64}}
अगर हम FORMAT JSON
. को हटा देते हैं, तो यहां बताया गया है भाग:
SELECT JSON_OBJECTAGG(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
परिणाम:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
डेटाबेस उदाहरण
JSON_OBJECTAGG()
फ़ंक्शन का उपयोग आमतौर पर डेटाबेस कॉलम में मानों के आधार पर JSON दस्तावेज़ बनाने के लिए किया जाता है।
मान लीजिए कि हम निम्नलिखित क्वेरी चलाते हैं:
SELECT *
FROM jobs
WHERE min_salary > 9000;
परिणाम:
JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY __________ ________________________________ _____________ _____________ AD_PRES President 20000 40000 AD_VP Administration Vice President 15000 30000 SA_MAN Sales Manager 10000 20000
यहां एक उदाहरण दिया गया है कि हम JSON_OBJECTAGG()
. का उपयोग कैसे कर सकते हैं उपरोक्त दो कॉलम से JSON दस्तावेज़ तैयार करने के लिए कार्य करता है:
SELECT JSON_OBJECTAGG(KEY job_id VALUE min_salary)
FROM jobs
WHERE min_salary > 9000;
परिणाम:
{"AD_PRES":20000,"AD_VP":15000,"SA_MAN":10000}
इस मामले में, job_id
कॉलम कुंजी है, और min_salary
कॉलम मान है।
इस फ़ंक्शन की अधिक विस्तृत व्याख्या के लिए Oracle के दस्तावेज़ देखें।