Oracle डाटाबेस में, NVL2()
फ़ंक्शन हमें शून्य मानों को दूसरे मान से बदलने की अनुमति देता है।
यह NVL()
के समान है फ़ंक्शन, सिवाय इसके कि यह दो के बजाय तीन तर्कों को स्वीकार करता है। यह हमें उस स्थिति में लौटने के लिए एक अलग मान निर्दिष्ट करने की अनुमति देता है जब पहला तर्क शून्य नहीं होता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
NVL2(expr1, expr2, expr3)
अगर expr1
शून्य नहीं है, तो NVL2
रिटर्न expr2
. अगर expr1
शून्य है, तो NVL2
रिटर्न expr3
।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:
SELECT NVL2(null, 2, 3)
FROM DUAL;
परिणाम:
3
पहला तर्क शून्य था और इसलिए तीसरा तर्क वापस कर दिया गया।
और यहाँ क्या होता है जब पहला तर्क शून्य नहीं होता है:
SELECT NVL2(1, 2, 3)
FROM DUAL;
परिणाम:
2
जब प्रतिस्थापन मान शून्य हो
यदि दूसरा या तीसरा तर्क शून्य है, तो आप एक शून्य परिणाम के साथ समाप्त हो सकते हैं।
उदाहरण:
SET NULL '(null)';
SELECT
NVL2(1, null, 3) AS "r1",
NVL2(null, 2, null) AS "r2"
FROM DUAL;
परिणाम:
r1 r2 _________ _________ (null) (null)
पहली पंक्ति के संबंध में SET NULL '(null)';
, मैंने इस लाइन को जोड़ा ताकि जब भी परिणाम शून्य हो तो मेरा SQLcl सत्र उस मान को वापस कर दे।
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null
. खाली स्थान लौटाते हैं SQL SELECT
. के परिणामस्वरूप होता है बयान।
हालांकि, आप SET NULL
. का उपयोग कर सकते हैं लौटाए जाने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए (जैसे मैंने यहां किया है)।
अवैध तर्क गणना
कोई तर्क पारित किए बिना फ़ंक्शन को कॉल करने से त्रुटि होती है:
SELECT NVL2()
FROM DUAL;
परिणाम:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
और बहुत अधिक तर्क पारित करने से भी त्रुटि होती है:
SELECT NVL2(1, 2, 3, 4)
FROM DUAL;
परिणाम:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"