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: