Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função MOD() no Oracle


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: