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: