В Oracle, MOD()
функцията връща модулната операция. С други думи, той връща остатъка от първия си аргумент, разделен на втория.
Синтаксис
Синтаксисът е така:
MOD(n2, n1)
Всеки аргумент може да бъде произволен числов тип данни или всеки нечисловен тип данни, който може да бъде имплицитно преобразуван в числов тип данни.
Пример
Ето един пример:
SELECT MOD(100, 6)
FROM DUAL;
Резултат:
MOD(100,6) _____________ 4
Oracle MOD() срещу класически модул
MOD()
на Oracle функцията се държи различно от класическата математическа модулна функция, ако продуктът на n1
и n2
е отрицателен.
Ето пример, който демонстрира как всеки от тях се различава:
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;
Резултат:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Нечислови аргументи
Аргументите могат да бъдат всеки числов тип данни или всеки нечисловен тип данни, които могат да бъдат имплицитно преобразувани в числов тип данни.
Ето пример за това какво се случва, когато аргументите не отговарят на тези критерии:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Нулеви аргументи
MOD()
връща null
ако някой аргумент е null
:
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Резултат:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Липсващи аргументи
Извикване на MOD()
с грешен брой аргументи или без никакви аргументи води до грешка:
SELECT MOD()
FROM DUAL;
Резултат:
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:
И:
SELECT MOD(10, 2, 3)
FROM DUAL;
Резултат:
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: