Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction MOD() dans Oracle

Dans Oracle, le MOD() La fonction renvoie l'opération modulo. En d'autres termes, il renvoie le reste de son premier argument divisé par son second.

Syntaxe

La syntaxe ressemble à ceci :

MOD(n2, n1)

Chaque argument peut être n'importe quel type de données numérique ou n'importe quel type de données non numérique qui peut être implicitement converti en un type de données numérique.

Exemple

Voici un exemple :

SELECT MOD(100, 6)
FROM DUAL;

Résultat :

   MOD(100,6) 
_____________ 
            4

Oracle MOD() vs module classique

MOD() d'Oracle fonction se comporte différemment de la fonction module mathématique classique, si le produit de n1 et n2 est négatif.

Voici un exemple qui montre en quoi chacun de ces éléments diffère :

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;

Résultat :

Oracle MOD()  Classical
____________  _________
           4	      4
           4	     -2
          -4	      2
          -4	     -4

Arguments non numériques

Les arguments peuvent être n'importe quel type de données numérique ou n'importe quel type de données non numérique qui peut être implicitement converti en un type de données numérique.

Voici un exemple de ce qui se passe lorsque les arguments ne satisfont pas à ce critère :

SELECT MOD('Homer', 'Symptom')
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT MOD('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Arguments nuls

MOD() renvoie null si un argument est null :

SET NULL 'null';

SELECT 
    MOD(null, 16),
    MOD(1024, null),
    MOD(null, null)
FROM DUAL;

Résultat :

   MOD(NULL,16)    MOD(1024,NULL)    MOD(NULL,NULL) 
_______________ _________________ _________________ 
           null              null              null 

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois qu'une valeur nulle se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Arguments manquants

Appel de MOD() avec le mauvais nombre d'arguments, ou sans aucun argument entraîne une erreur :

SELECT MOD()
FROM DUAL;

Résultat :

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:

Et :

SELECT MOD(10, 2, 3)
FROM DUAL;

Résultat :

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: