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

REMAINDER () Oracle में फंक्शन

Oracle में, REMAINDER() फ़ंक्शन अपने पहले तर्क के शेष को इसके दूसरे से विभाजित करके लौटाता है।

यह MOD() . के समान है फ़ंक्शन, सिवाय इसके कि यह ROUND() . का उपयोग करता है इसकी गणना में, जबकि MOD() FLOOR() . का उपयोग करता है इसकी गणना में।

सिंटैक्स

वाक्य रचना इस प्रकार है:

REMAINDER(n2, n1)

प्रत्येक तर्क कोई भी संख्यात्मक डेटा प्रकार या कोई गैर-संख्यात्मक डेटा प्रकार हो सकता है जिसे परोक्ष रूप से एक संख्यात्मक डेटा प्रकार में परिवर्तित किया जा सकता है।

उदाहरण

यहां एक उदाहरण दिया गया है:

SELECT REMAINDER(100, 6)
FROM DUAL;

परिणाम:

   REMAINDER(100,6) 
___________________ 
                 -2 

REMAINDER() बनाम MOD()

उपरोक्त परिणाम अप्रत्याशित प्रतीत हो सकता है, खासकर जब MOD() . की तुलना में समारोह। लेकिन ऐसा इसलिए है क्योंकि MOD() FLOOR() . का उपयोग करता है अपने सूत्र में कार्य करता है, जबकि REMAINDER() ROUND() . का उपयोग करता है समारोह।

यहां दो कार्यों की तुलना की गई है:

SELECT 
    REMAINDER(100, 6),
    MOD(100, 6)
FROM DUAL;

परिणाम:

   REMAINDER(100,6)    MOD(100,6) 
___________________ _____________ 
                 -2             4

इस मामले में, हम दो कार्यों से काफी भिन्न परिणाम प्राप्त करते हैं, भले ही वे दोनों इसके पहले तर्क के शेष भाग को इसके दूसरे से विभाजित करते हैं।

क्या हो रहा है?

शायद इसके बारे में सोचने का सबसे आसान तरीका इस प्रकार है:

SELECT 
    100/6,
    ROUND(100/6) AS "ROUND()",
    FLOOR(100/6) AS "FLOOR()"
FROM DUAL;

परिणाम:

     100/6    ROUND()    FLOOR()
---------- ---------- ----------
16.6666667         17         16

इस मामले में हमें एक अलग परिणाम मिलता है, जो इस पर निर्भर करता है कि हम ROUND() . का उपयोग करते हैं या नहीं या FLOOR() .

  • यदि हम 17 को 6 से गुणा करते हैं, तो हमें 102 प्राप्त होता है। इससे हमें -2 का शेषफल मिलता है।
  • यदि हम 16 को 6 से गुणा करते हैं, तो हमें 96 प्राप्त होता है। इससे हमें शेषफल 4 मिलता है।

अगर हम 6 . को बदलते हैं एक 7 . के लिए , दोनों फ़ंक्शन एक ही परिणाम लौटाते हैं:

SELECT 
    REMAINDER(100, 7),
    MOD(100, 7)
FROM DUAL;

परिणाम:

   REMAINDER(100,7)    MOD(100,7) 
___________________ _____________ 
                  2             2 

और ये रहा ROUND() और FLOOR() वापसी:

SELECT 
    100/7,
    ROUND(100/7) AS "ROUND()",
    FLOOR(100/7) AS "FLOOR()"
FROM DUAL;

परिणाम:

     100/7    ROUND()    FLOOR()
---------- ---------- ----------
14.2857143         14         14

गैर-संख्यात्मक तर्क

तर्क कोई भी संख्यात्मक डेटा प्रकार या कोई गैर-संख्यात्मक डेटा प्रकार हो सकता है जिसे परोक्ष रूप से एक संख्यात्मक डेटा प्रकार में परिवर्तित किया जा सकता है।

जब तर्क उस मानदंड को पूरा नहीं करते हैं तो क्या होता है इसका एक उदाहरण यहां दिया गया है:

SELECT REMAINDER('Ponzi', 'Invest')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REMAINDER('Ponzi', 'Invest')
FROM DUAL
Error report -
ORA-01722: invalid number

अशक्त तर्क

REMAINDER() रिटर्न null यदि कोई तर्क null है :

SET NULL 'null';

SELECT 
    REMAINDER(null, 2),
    REMAINDER(7, null),
    REMAINDER(null, null)
FROM DUAL;

परिणाम:

   REMAINDER(NULL,2)    REMAINDER(7,NULL)    REMAINDER(NULL,NULL) 
____________________ ____________________ _______________________ 
                null                 null                    null

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी SQL SELECT के परिणामस्वरूप एक रिक्त मान उत्पन्न होता है तो एक रिक्त स्थान लौटाता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null वापस किया जाना चाहिए।

अनुपलब्ध तर्क

कॉलिंग REMAINDER() तर्कों की गलत संख्या के साथ, या बिना किसी तर्क के त्रुटि उत्पन्न होती है:

SELECT REMAINDER()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REMAINDER()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

और:

SELECT REMAINDER(10, 2, 3)
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REMAINDER(10, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  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. अमान्य रूपांतरण का अनुरोध क्यों किया गया त्रुटि कोड:17132?

  3. मैं ऑब्जेक्ट प्रकारों की नेस्टेड तालिकाओं के साथ Oracle तालिका कैसे बनाऊं?

  4. Oracle में अल्पविराम से किसी संख्या को कैसे प्रारूपित करें?

  5. Oracle 11g में प्रक्रिया में REFCURSOR चर को OUT पैरामीटर के रूप में प्रिंट करने में त्रुटि