No Oracle, o
MOD()
A função retorna a operação do módulo. Em outras palavras, ele retorna o restante do primeiro argumento dividido pelo segundo. Sintaxe
A sintaxe fica assim:
MOD(n2, n1)
Cada argumento pode ser qualquer tipo de dados numérico ou qualquer tipo de dados não numérico que possa ser convertido implicitamente em um tipo de dados numérico.
Exemplo
Aqui está um exemplo:
SELECT MOD(100, 6)
FROM DUAL;
Resultado:
MOD(100,6) _____________ 4
Oracle MOD() vs Módulo Clássico
MOD()
da Oracle A função se comporta de maneira diferente da função de módulo matemático clássico, se o produto de n1
e n2
é negativo. Aqui está um exemplo que demonstra como cada um deles difere:
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;
Resultado:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Argumentos não numéricos
Os argumentos podem ser qualquer tipo de dados numérico ou qualquer tipo de dados não numérico que possa ser convertido implicitamente em um tipo de dados numérico.
Aqui está um exemplo do que acontece quando os argumentos não satisfazem esse critério:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Argumentos nulos
MOD()
retorna null
se algum argumento for null
:SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Resultado:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que um valor nulo ocorre como resultado de um SQL
SELECT
demonstração. No entanto, você pode usar
SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido. Argumentos ausentes
Chamando
MOD()
com o número errado de argumentos ou sem argumentos resulta em um erro:SELECT MOD()
FROM DUAL;
Resultado:
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;
Resultado:
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: