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: