Dans Oracle, le ROUND(number)
renvoie un nombre arrondi à un nombre donné de décimales.
Par défaut, il arrondit le nombre à zéro décimale, mais vous pouvez fournir un argument facultatif qui spécifie le nombre de décimales à utiliser.
Oracle a aussi un ROUND(date)
syntaxe, qui est utilisée sur les dates. Cet article concerne uniquement le ROUND(number)
syntaxe, qui est utilisée sur les nombres.
Syntaxe
La syntaxe ressemble à ceci :
ROUND(n [, integer ])
Où n
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, et integer
est un entier facultatif qui spécifie le nombre de décimales à arrondir n
à.
Exemple
Voici un exemple :
SELECT ROUND(7.85)
FROM DUAL;
Résultat :
ROUND(7.85) ______________ 8
Valeur négative
Le passer à une valeur négative produit le résultat suivant :
SELECT ROUND(-7.85)
FROM DUAL;
Résultat :
ROUND(-7.85) _______________ -8
Deuxième argument
Voici un exemple de fourniture d'un deuxième argument :
SELECT ROUND(7.85, 1)
FROM DUAL;
Résultat :
ROUND(7.85,1) ________________ 7.9
Dans ce cas, j'ai spécifié que le résultat devait être arrondi à une décimale.
Voici un autre exemple avec un plus grand nombre de décimales :
SELECT ROUND(3.14159265359, 4)
FROM DUAL;
Résultat :
ROUND(3.14159265359,4) _________________________ 3.1416
Arrondi négatif
Vous pouvez également spécifier une valeur négative pour le deuxième argument. Cela arrondit le nombre à gauche de la virgule :
SELECT ROUND(75631, -3)
FROM DUAL;
Résultat :
ROUND(75631,-3) __________________ 76000
Arrondir les arguments non numériques
Voici ce qui se passe lorsque nous essayons d'arrondir un argument non numérique qui ne peut pas être converti en un type de données numérique :
SELECT ROUND('Bruce')
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT ROUND('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Cependant, nous pouvons arrondir les dates - il existe une version de date de cette fonction qui nous permet d'arrondir les dates.
Valeurs nulles
Essayer d'arrondir null
renvoie null
, et en essayant d'arrondir un nombre par null
donne également null
:
SET NULL 'null';
SELECT
ROUND(null),
ROUND(null, 2),
ROUND(2.345, null)
FROM DUAL;
Résultat :
ROUND(NULL) ROUND(NULL,2) ROUND(2.345,NULL) ______________ ________________ ____________________ null null null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
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é.
Nombre d'arguments incorrects
Appel de ROUND()
sans passer aucun argument renvoie une erreur :
SELECT ROUND()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT ROUND() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Et passer le mauvais nombre d'arguments entraîne une erreur :
SELECT ROUND(1.34, 2, 3)
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT ROUND(1.34, 2, 3) FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: