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

Oracle में Coalesce फ़ंक्शन का उपयोग कैसे करें

कोलेस फंक्शन क्या है

कोलेस फंक्शन ऑरैकल में एक उपयोगी कार्य है और यह बहुत उपयोगी है जब हम सूची में पहले गैर-शून्य मान वापस करना चाहते हैं। यह 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 फ़ंक्शन के बीच अंतर

  1. Coalesce NVL फ़ंक्शन का सामान्यीकरण है। NVL फ़ंक्शन का उपयोग दो अभिव्यक्तियों के लिए किया जा सकता है, जबकि कोलेस का उपयोग कई के लिए किया जा सकता है
  2. दो एक्सप्रेशन के मामले में, वे समान हैं लेकिन कार्यान्वयन अलग है। Oracle NVL के मामले में दोनों एक्सप्रेशन का मूल्यांकन करता है, जबकि यह कोलेस के मामले में पहली अभिव्यक्ति का मूल्यांकन करता है। इसलिए यदि दूसरी अभिव्यक्ति में त्रुटियां हैं, तो NVL त्रुटि फेंक देगा जबकि जमा नहीं होगा।
  3. 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


  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 - विशिष्ट मान सम्मिलित करने वाला कथन ढूँढें

  2. ORACLE अद्यतन ट्रिगर के बाद:ORA-04091 उत्परिवर्तित तालिका त्रुटि को हल करना

  3. Oracle सेट ऑपरेटर्स

  4. त्रुटि:PLS-00428:इस चयन कथन में एक खंड में अपेक्षित है

  5. पीएल/एसक्यूएल का उपयोग करके क्रेडिट कार्ड नंबर की पुष्टि कैसे करें और इसके प्रकार की पहचान कैसे करें?