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

Fonction ROUND(nombre) dans Oracle

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 ])

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: