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

Fonction FLOOR() dans Oracle

Dans Oracle, le FLOOR() La fonction renvoie le plus grand entier égal ou inférieur à son argument.

Syntaxe

La syntaxe ressemble à ceci :

FLOOR(n)

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.

Exemple

Voici un exemple :

SELECT FLOOR(1.85)
FROM DUAL;

Résultat :

   FLOOR(1.85) 
______________ 
             1 

Le passer à une valeur négative produit le résultat suivant :

SELECT FLOOR(-1.85)
FROM DUAL;

Résultat :

   FLOOR(-1.85) 
_______________ 
             -2 

Comparé à ROUND()

Le FLOOR() la fonction est différente de ROUND() une fonction. Le ROUND() fonction arrondirait le nombre vers le haut dans certains cas, et vers le bas dans d'autres. FLOOR() d'autre part, renvoie toujours le plus grand entier égal ou inférieur à son argument.

SELECT 
    FLOOR(1.85),
    ROUND(1.85)
FROM DUAL;

Résultat :

   FLOOR(1.85)    ROUND(1.85) 
______________ ______________ 
             1              2 

Aussi, ROUND() permet de spécifier le nombre de décimales à arrondir :

SELECT 
    FLOOR(1.85),
    ROUND(1.85, 1)
FROM DUAL;

Résultat :

   FLOOR(1.85)    ROUND(1.85,1) 
______________ ________________ 
             1              1.9 

Argument non numérique

L'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.

Voici ce qui se passe lorsque nous fournissons un argument non numérique qui ne peut pas être converti en un type de données numérique :

SELECT FLOOR('Bruce')
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT FLOOR('Bruce')
FROM DUAL
Error report -
ORA-01722: invalid number

Valeurs nulles

Passer null à FLOOR() renvoie null :

SET NULL 'null';

SELECT FLOOR(null)
FROM DUAL;

Résultat :

   FLOOR(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 FLOOR() sans passer d'argument renvoie une erreur :

SELECT FLOOR()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT FLOOR()
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 passer le mauvais nombre d'arguments entraîne une erreur :

SELECT FLOOR(1, 2)
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT FLOOR(1, 2)
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:

Oracle a également un CEIL() fonction qui renvoie le plus petit entier supérieur ou égal à son argument.