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

Oracle में NANVL () फ़ंक्शन

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 - "तर्कों की अमान्य संख्या"*कारण:*कार्रवाई:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-1114 रनिंग डाटापैच

  2. SQL त्रुटि:ORA-02000:पहचान कॉलम आधारित तालिका बनाते समय हमेशा कीवर्ड गुम होना

  3. ओरेकल डेटाबेस 11g एक्सप्रेस संस्करण को स्थापित करने के बाद एक नया डेटाबेस कैसे बनाएं?

  4. ऑरैकल में दिनांक और समय कैसे सम्मिलित करें?

  5. पीएल/एसक्यूएल प्रिंट आउट रेफ कर्सर एक संग्रहीत प्रक्रिया द्वारा लौटाया गया