Oracle
 sql >> Datenbank >  >> RDS >> Oracle

MOD()-Funktion in Oracle

In Oracle das MOD() Funktion gibt die Modulo-Operation zurück. Mit anderen Worten, es gibt den Rest seines ersten Arguments dividiert durch sein zweites zurück.

Syntax

Die Syntax lautet wie folgt:

MOD(n2, n1)

Jedes Argument kann ein beliebiger numerischer Datentyp oder ein beliebiger nicht numerischer Datentyp sein, der implizit in einen numerischen Datentyp konvertiert werden kann.

Beispiel

Hier ist ein Beispiel:

SELECT MOD(100, 6)
FROM DUAL;

Ergebnis:

   MOD(100,6) 
_____________ 
            4

Oracle MOD() vs. klassischer Modulus

MOD() von Oracle Funktion verhält sich anders als die klassische mathematische Modulfunktion, wenn das Produkt von n1 und n2 ist negativ.

Hier ist ein Beispiel, das zeigt, wie sich diese unterscheiden:

SELECT 
    MOD(100, 6) AS "Oracle MOD()",
    100 - 6 * FLOOR(100/6) AS "Classical"
FROM DUAL

UNION ALL

SELECT 
    MOD(100, -6),
    100 - -6 * FLOOR(100/-6)
FROM DUAL

UNION ALL

SELECT 
    MOD(-100, 6),
    -100 - 6 * FLOOR(-100/6)
FROM DUAL

UNION ALL

SELECT 
    MOD(-100, -6),
    -100 - -6 * FLOOR(-100/-6)
FROM DUAL;

Ergebnis:

Oracle MOD()  Classical
____________  _________
           4	      4
           4	     -2
          -4	      2
          -4	     -4

Nicht numerische Argumente

Die Argumente können ein beliebiger numerischer Datentyp oder ein beliebiger nicht numerischer Datentyp sein, der implizit in einen numerischen Datentyp konvertiert werden kann.

Hier ist ein Beispiel dafür, was passiert, wenn die Argumente dieses Kriterium nicht erfüllen:

SELECT MOD('Homer', 'Symptom')
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT MOD('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Null-Argumente

MOD() gibt null zurück wenn irgendein Argument null ist :

SET NULL 'null';

SELECT 
    MOD(null, 16),
    MOD(1024, null),
    MOD(null, null)
FROM DUAL;

Ergebnis:

   MOD(NULL,16)    MOD(1024,NULL)    MOD(NULL,NULL) 
_______________ _________________ _________________ 
           null              null              null 

Standardmäßig geben SQLcl und SQL*Plus immer dann ein Leerzeichen zurück, wenn als Ergebnis eines SQL SELECT ein Nullwert auftritt Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Fehlende Argumente

Aufruf von MOD() mit der falschen Anzahl von Argumenten oder ohne Argumente führt zu einem Fehler:

SELECT MOD()
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT MOD()
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:

Und:

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

Ergebnis:

Error starting at line : 1 in command -
SELECT MOD(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: