यह SQL ट्यूटोरियल Oracle में NVL2 फ़ंक्शन के लिए स्पष्टीकरण, उदाहरण प्रदान करता है
NVL2 फ़ंक्शन एक नेस्टिंग फ़ंक्शन है। यह पहली छाप की जांच करता है, यदि पहली छाप शून्य नहीं है, तो NVL2 फ़ंक्शन दूसरी अभिव्यक्ति देता है। यदि पहली छाप शून्य है, तो यह तीसरी अभिव्यक्ति लौटाती है।
expr1 :यह स्रोत मान या अभिव्यक्ति है जिसमें शून्य हो सकता है। आप कॉलम नाम, कॉलम नाम पर फ़ंक्शन प्रदान कर सकते हैं
expr2 :यह उस व्यंजक का मान है जो लौटाया जाता है यदि expr1 रिक्त नहीं है
expr3 :यह उस व्यंजक का मान है जो कि expr1 के रिक्त होने पर लौटा दिया जाता है
तर्क expr1 में कोई डेटाटाइप हो सकता है। तर्क expr2 और expr3 में LONG को छोड़कर कोई भी डेटाटाइप हो सकता है।
SQL> select nvl2(user_name,1,2) from apps.fnd_user where rownum < 5; NVL2(USER_NAME,1,2) ------------------- 1 1 1 1 SQL> select nvl2(end_date,1,2) from apps.fnd_user where rownum < 5; NVL2(END_DATE,1,2) ------------------ 1 2 1 1
यदि expr2 और expr3 के डेटा प्रकार भिन्न हैं:
यदि expr2 वर्ण डेटा है, तो Oracle डेटाबेस expr3 को तुलना करने से पहले expr2 के डेटाटाइप में परिवर्तित करता है जब तक कि expr3 एक शून्य स्थिरांक न हो। उस स्थिति में, डेटाटाइप रूपांतरण आवश्यक नहीं है। Oracle VARCHAR2 को expr2 के कैरेक्टर सेट में लौटाता है।
यदि expr2 सांख्यिक है, तो Oracle यह निर्धारित करता है कि किस तर्क में सबसे अधिक संख्यात्मक पूर्वता है, दूसरे तर्क को उस डेटाटाइप में परोक्ष रूप से परिवर्तित करता है, और उस डेटाटाइप को लौटाता है।
रिटर्न प्रकार का डेटा प्रकार हमेशा expr2 के डेटा प्रकार के समान होता है जब तक कि expr2 वर्ण डेटा न हो, कौन सा केस रिटर्न मान हमेशा varchar2 होता है
SQL> select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5; select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5 * ERROR at line 1: ORA-01722: invalid number SQL> select nvl2(end_date,'a',1) from apps.fnd_user where rownum < 5; N - a 1 a a
उपयोग
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name;
संबंधित लेख
Sql में सिंगल रो फंक्शन
Oracle में NULLIF फंक्शन
ओरेकल में अपडेट स्टेटमेंट
Oracle में Coalesce फंक्शन
Oracle LISTAGG फंक्शन
ओरेकल डेट फंक्शन्स