V Oracle je to MOD()
funkce vrací operaci modulo. Jinými slovy, vrátí zbytek svého prvního argumentu dělený druhým.
Syntaxe
Syntaxe vypadá takto:
MOD(n2, n1)
Každý argument může být jakýkoli číselný datový typ nebo jakýkoli nenumerický datový typ, který lze implicitně převést na číselný datový typ.
Příklad
Zde je příklad:
SELECT MOD(100, 6)
FROM DUAL;
Výsledek:
MOD(100,6) _____________ 4
Oracle MOD() vs. Classical Modulus
MOD()
společnosti Oracle funkce se chová odlišně od klasické matematické modulové funkce, pokud je součin n1
a n2
je negativní.
Zde je příklad, který ukazuje, jak se každý z nich liší:
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;
Výsledek:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Nečíselné argumenty
Argumenty mohou být jakýkoli číselný datový typ nebo jakýkoli nenumerický datový typ, který lze implicitně převést na číselný datový typ.
Zde je příklad toho, co se stane, když argumenty nesplňují tato kritéria:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Nulové argumenty
MOD()
vrátí null
pokud je nějaký argument null
:
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Výsledek:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT
objeví hodnota null. prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Chybí argumenty
Volání MOD()
s nesprávným počtem argumentů nebo bez jakýchkoli argumentů vede k chybě:
SELECT MOD()
FROM DUAL;
Výsledek:
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:
A:
SELECT MOD(10, 2, 3)
FROM DUAL;
Výsledek:
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: