कोलेस फंक्शन क्या है
कोलेस फंक्शन ऑरैकल में एक उपयोगी कार्य है और यह बहुत उपयोगी है जब हम सूची में पहले गैर-शून्य मान वापस करना चाहते हैं। यह SQL ट्यूटोरियल Oracle में Coalesce फ़ंक्शन और Coalesce और NVL के बीच अंतर के लिए स्पष्टीकरण, उदाहरण प्रदान करता है
expr1 :यदि यह शून्य नहीं है तो इसे वापस कर दिया जाता है
expr2:यदि यह शून्य नहीं है और पहली अभिव्यक्ति शून्य है तो इसे वापस कर दिया जाता है
exprn:यदि पूर्ववर्ती अभिव्यक्ति शून्य है तो इसे वापस कर दिया जाता है
तो ऑरैकल में कोलेस पहली अभिव्यक्ति लौटाएगा यदि यह शून्य नहीं है अन्यथा यह शेष अभिव्यक्ति को जोड़ देगा
महत्वपूर्ण बिंदु
(1) Oracle डाटाबेस शॉर्ट-सर्किट मूल्यांकन का उपयोग करता है। डेटाबेस प्रत्येक expr मान का मूल्यांकन करता है और यह निर्धारित करता है कि क्या यह NULL है, यह निर्धारित करने से पहले कि उनमें से कोई भी NULL है, सभी expr मानों का मूल्यांकन करने के बजाय।
(2)ऑरेकल में COALESCE केस फंक्शन के बराबर है
तो COALESCE (expr1, expr2) इसके बराबर है:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
इसी तरह,
COALESCE (expr1, expr2, …, exprn), n>=3 के लिए बराबर है:
CASE WHEN expr1 IS NOT NULL THEN expr1 WHEN expr2 IS NOT NULL THEN expr2 WHEN expr3 IS NOT NULL THEN expr3 WHEN exprn IS NOT NULL THEN exprn END
या इसे
. के रूप में लिखा जा सकता हैCASE WHEN expr1 IS NOT NULL THEN expr1 ELSE COALESCE (expr2, ..., exprn) END
(3) आमतौर पर कोलेस स्टेटमेंट के सभी एक्सप्रेशन एक ही डेटाटाइप के होने चाहिए अन्यथा ORA-00932 वापस कर दिया जाएगा।
SQL> select coalesce('a',1,2) from dual; select coalesce('a',1,2) from dual * ERROR at line 1: ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
यदि अभिव्यक्ति की सभी घटनाएँ संख्यात्मक डेटाटाइप या कोई गैर-संख्यात्मक डेटा प्रकार हैं जिसे परोक्ष रूप से एक संख्यात्मक डेटाटाइप में परिवर्तित किया जा सकता है, तो Oracle डेटाबेस उच्चतम संख्यात्मक पूर्वता के साथ तर्क को निर्धारित करता है, शेष तर्कों को उस डेटाटाइप में परिवर्तित करता है और उस डेटाटाइप को वापस करता है।
कोलेस फ़ंक्शन का उपयोग कैसे करें
SQL> select coalesce(1,2,3) from dual; COALESCE(1,2,3) --------------- 1 SQL> SELECT COALESCE(null, null, null, 'X', 'Y'); COALESCE(...) --------------- X
एकल उदाहरण
मान लीजिए कि हमारे पास एक कर्मचारी ओरेकल तालिका है जिसमें पता1, पता2, और पता3 शामिल है और हम प्राथमिकता के क्रम में तालिका से कर्मचारियों का पहला गैर-शून्य पता प्रिंट करना चाहते हैं पता1> पता2> पता3
select emp_name, COALESCE(address1,address2,address3) from employee;
Coalesce और NVL फ़ंक्शन के बीच अंतर
- Coalesce NVL फ़ंक्शन का सामान्यीकरण है। NVL फ़ंक्शन का उपयोग दो अभिव्यक्तियों के लिए किया जा सकता है, जबकि कोलेस का उपयोग कई के लिए किया जा सकता है
- दो एक्सप्रेशन के मामले में, वे समान हैं लेकिन कार्यान्वयन अलग है। Oracle NVL के मामले में दोनों एक्सप्रेशन का मूल्यांकन करता है, जबकि यह कोलेस के मामले में पहली अभिव्यक्ति का मूल्यांकन करता है। इसलिए यदि दूसरी अभिव्यक्ति में त्रुटियां हैं, तो NVL त्रुटि फेंक देगा जबकि जमा नहीं होगा।
- Coalesce ANSI मानक है जबकि NVL Oracle विशिष्ट है
संबंधित लेख
Oracle Sql ट्यूटोरियल
Oracle में NULLIF फ़ंक्शन
Oracle में NVL फ़ंक्शन
Oracle LISTAGG फंक्शन
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ functions023.htm#SQLRF00617