Oracle में, NANVL()
फ़ंक्शन हमें NaN
. से निपटने की अनुमति देता है इसके स्थान पर लौटने के लिए कोई अन्य संख्या निर्दिष्ट करके मान।
जिस तरह से यह काम करता है, वह दो तर्कों को स्वीकार करता है। यदि पहला तर्क NaN
है (संख्या नहीं), यह दूसरा तर्क देता है। यदि पहला तर्क है एक नंबर, तो वह बस उस नंबर को लौटा देता है।
ध्यान दें कि यह फ़ंक्शन केवल BINARY_FLOAT
. प्रकार के फ़्लोटिंग-पॉइंट नंबरों के लिए उपयोगी है या BINARY_DOUBLE
।
सिंटैक्स
वाक्य रचना इस प्रकार है:
NANVL(n2, n1)
प्रत्येक तर्क कोई भी संख्यात्मक डेटा प्रकार या कोई गैर-संख्यात्मक डेटा प्रकार हो सकता है जिसे परोक्ष रूप से एक संख्यात्मक डेटा प्रकार में परिवर्तित किया जा सकता है।
उदाहरण
हम NaN
. का उत्पादन कर सकते हैं शून्य फ्लोट/डबल मान को शून्य से विभाजित करके:
SELECT 0f/0
FROM DUAL;
परिणाम:
0F/0 _______ NaN
लेकिन अगर हम NaN
नहीं चाहते हैं वापस करने के लिए, हम NANVL()
. का उपयोग कर सकते हैं एक अलग मान वापस करने के लिए कार्य करें:
SELECT NANVL(0f/0, 0)
FROM DUAL;
परिणाम:
NANVL(0F/0,0) ________________ 0.0
यहाँ यह फिर से है, लेकिन इस बार हम NaN
. के स्थान पर लौटने के लिए एक अलग मान निर्दिष्ट करते हैं :
SELECT NANVL(0f/0, 123)
FROM DUAL;
परिणाम:
NANVL(0F/0,123) ___________ 123.0
NaN
फ्लोटिंग-प्वाइंट लिटरल
ओरेकल उन स्थितियों के लिए कुछ फ़्लोटिंग-पॉइंट अक्षर भी प्रदान करता है जिन्हें संख्यात्मक शाब्दिक के रूप में व्यक्त नहीं किया जा सकता है। इनमें शामिल हैं binary_float_nan
जो BINARY_FLOAT
. प्रकार के मान का प्रतिनिधित्व करता है जिसके लिए शर्त IS
. है NAN
सत्य है, और binary_double_nan
, जो BINARY_DOUBLE
. प्रकार के मान का प्रतिनिधित्व करता है जिसके लिए शर्त IS
. है NAN
सच है।
इसके बजाय इन फ़्लोटिंग-पॉइंट लिटरल का उपयोग करने का एक उदाहरण यहां दिया गया है:
DUAL सेSELECT
NANVL(binary_double_nan, 0),
NANVL(binary_float_nan, 0)
FROM DUAL;
परिणाम:
NANVL(BINARY_DOUBLE_NAN,0) NANVL(BINARY_FLOAT_NAN,0) ________________________________ ____________________________ 0.0 0.0
नंबर पास करना
जैसा कि उल्लेख किया गया है, यदि पहला तर्क एक संख्या है, तो वह उस संख्या को लौटाता है:
SELECT NANVL(33, 0)
FROM DUAL;
परिणाम:
एनएएनवीएल(33,0) ______________ 33
गैर-संख्यात्मक तर्क
तर्क कोई भी संख्यात्मक डेटा प्रकार या कोई गैर-संख्यात्मक डेटा प्रकार हो सकता है जिसे परोक्ष रूप से एक संख्यात्मक डेटा प्रकार में परिवर्तित किया जा सकता है।
जब तर्क उस मानदंड को पूरा नहीं करते हैं तो क्या होता है इसका एक उदाहरण यहां दिया गया है:
SELECT NANVL('Gosh', 'Dang')
FROM DUAL;
परिणाम:
त्रुटि शुरू करने में त्रुटि:1 कमांड में - DUALError रिपोर्ट से NANVL ('Gosh', 'Dang') चुनें -ORA-01722:अमान्य संख्या
अशक्त तर्क
NANVL()
रिटर्न null
यदि कोई तर्क null
है :
SET NULL 'null';
SELECT
NANVL(null, 16),
NANVL(1024, null),
NANVL(null, null)
FROM DUAL;
परिणाम:
NANVL(NULL,16) NANVL(1024,NULL) NANVL(NULL,NULL) _________डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी SQL
SELECT
के परिणामस्वरूप एक रिक्त मान उत्पन्न होता है तो एक रिक्त स्थान लौटाता है बयान।हालांकि, आप
SET NULL
. का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंगnull
लौटाया जाना चाहिए।अनुपलब्ध तर्क
कॉलिंग
NANVL()
बिना किसी तर्क के त्रुटि उत्पन्न होती है:SELECT NANVL() FROM DUAL;
परिणाम:
लाइन पर शुरू होने में त्रुटि:कमांड में 1 - कमांड लाइन पर DUALError से NANVL () का चयन करें:1 कॉलम:8 त्रुटि रिपोर्ट - SQL त्रुटि:ORA-00909:तर्कों की अमान्य संख्या00909। 00000 - "तर्कों की अमान्य संख्या"*कारण:*कार्रवाई:और यही बात बहुत अधिक तर्कों के साथ कॉल करने पर भी लागू होती है:
SELECT NANVL(10, 2, 3) FROM DUAL;
परिणाम:
लाइन से शुरू होने में त्रुटि:कमांड में 1 - कमांड लाइन पर DUALError से NANVL (10, 2, 3) चुनें:1 कॉलम:8 त्रुटि रिपोर्ट - SQL त्रुटि:ORA-00909:तर्कों की अमान्य संख्या00909। 00000 - "तर्कों की अमान्य संख्या"*कारण:*कार्रवाई: