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

Qual é a diferença entre MOD e REMAINDER no oracle?


A documentação é bastante claro sobre a diferença:

Em outras palavras, quando os argumentos são inteiros positivos, a função mod retorna um número positivo entre 0 e o segundo argumento. A função restante retorna um número cujo valor absoluto é menor que o segundo argumento dividido por 2.

As diferenças podem ser mais marcantes para números negativos. Um exemplo de diferença é:
REMAINDER(-15, 4)
MOD(-15, 4)

O primeiro fornece -3 e o segundo 1 .

EDITAR:

O que esta acontecendo aqui? Quantas vezes 4 vai para -15. Um método é "-4" vezes com um resto de 1. Ou seja:-15 =4*(-4) + 1. O outro é "-3" vezes:-15 =4*(-3) - 3.

A diferença que é -15/4 expressa como um número inteiro. Usando floor, você obtém -4 . Usando round, você obtém -3 .