W Oracle MOD()
funkcja zwraca operację modulo. Innymi słowy, zwraca resztę swojego pierwszego argumentu podzieloną przez drugi.
Składnia
Składnia wygląda tak:
MOD(n2, n1)
Każdy argument może być dowolnym numerycznym typem danych lub dowolnym nienumerycznym typem danych, który można niejawnie przekonwertować na numeryczny typ danych.
Przykład
Oto przykład:
SELECT MOD(100, 6)
FROM DUAL;
Wynik:
MOD(100,6) _____________ 4
Oracle MOD() a moduł klasyczny
MOD()
Oracle funkcja zachowuje się inaczej niż klasyczna matematyczna funkcja modułu, jeśli iloczyn n1
i n2
jest ujemny.
Oto przykład, który pokazuje, jak każdy z nich się różni:
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;
Wynik:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Argumenty nieliczbowe
Argumentami może być dowolny numeryczny typ danych lub dowolny nienumeryczny typ danych, który można niejawnie przekonwertować na numeryczny typ danych.
Oto przykład tego, co się dzieje, gdy argumenty nie spełniają tych kryteriów:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Argumenty zerowe
MOD()
zwraca null
jeśli jakikolwiek argument jest null
:
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Wynik:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
Domyślnie SQLcl i SQL*Plus zwracają spację za każdym razem, gdy w wyniku polecenia SQL SELECT
wystąpi wartość null oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Brakujące argumenty
Wywołanie MOD()
z niewłaściwą liczbą argumentów lub bez żadnych argumentów powoduje błąd:
SELECT MOD()
FROM DUAL;
Wynik:
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:
Oraz:
SELECT MOD(10, 2, 3)
FROM DUAL;
Wynik:
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: