In Oracle, il MOD()
funzione restituisce l'operazione modulo. In altre parole, restituisce il resto del suo primo argomento diviso per il secondo.
Sintassi
La sintassi è questa:
MOD(n2, n1)
Ogni argomento può essere qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito in modo implicito in un tipo di dati numerico.
Esempio
Ecco un esempio:
SELECT MOD(100, 6)
FROM DUAL;
Risultato:
MOD(100,6) _____________ 4
Oracle MOD() vs Modulo classico
MOD()
di Oracle funzione si comporta in modo diverso dalla classica funzione modulo matematico, se il prodotto di n1
e n2
è negativo.
Ecco un esempio che dimostra come ognuno di questi differisce:
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;
Risultato:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Argomenti non numerici
Gli argomenti possono essere qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito in modo implicito in un tipo di dati numerico.
Ecco un esempio di cosa succede quando gli argomenti non soddisfano quel criterio:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Risultato:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Argomenti nulli
MOD()
restituisce null
se un argomento è null
:
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Risultato:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che si verifica un valore nullo come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi utilizzare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Argomenti mancanti
Chiamando MOD()
con il numero errato di argomenti o senza argomenti genera un errore:
SELECT MOD()
FROM DUAL;
Risultato:
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:
E:
SELECT MOD(10, 2, 3)
FROM DUAL;
Risultato:
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: