Oracle
 sql >> Database >  >> RDS >> Oracle

FLOOR() Funzione in Oracle

In Oracle, il FLOOR() la funzione restituisce il numero intero più grande uguale o inferiore al suo argomento.

Sintassi

La sintassi è questa:

FLOOR(n)

Dove n può essere qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito in modo implicito in un tipo di dati numerico.

Esempio

Ecco un esempio:

SELECT FLOOR(1.85)
FROM DUAL;

Risultato:

   FLOOR(1.85) 
______________ 
             1 

Passandolo a un valore negativo si ottiene il seguente risultato:

SELECT FLOOR(-1.85)
FROM DUAL;

Risultato:

   FLOOR(-1.85) 
_______________ 
             -2 

Rispetto a ROUND()

Il FLOOR() la funzione è diversa da ROUND() funzione. Il ROUND() funzione arrotonda il numero per eccesso in alcuni casi e per difetto in altri. FLOOR() d'altra parte, restituisce sempre l'intero più grande uguale o inferiore al suo argomento.

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

Risultato:

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

Inoltre, ROUND() ci consente di specificare il numero di cifre decimali da arrotondare a:

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

Risultato:

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

Argomento non numerico

L'argomento può essere qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito in modo implicito in un tipo di dati numerico.

Ecco cosa succede quando forniamo un argomento non numerico che non può essere convertito in un tipo di dati numerico:

SELECT FLOOR('Bruce')
FROM DUAL;

Risultato:

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

Valori Nulli

Passaggio null a FLOOR() restituisce null :

SET NULL 'null';

SELECT FLOOR(null)
FROM DUAL;

Risultato:

   FLOOR(NULL) 
______________ 
          null

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Conteggio argomenti errato

Chiamando FLOOR() senza passare alcun argomento restituisce un errore:

SELECT FLOOR()
FROM DUAL;

Risultato:

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:

E il passaggio del numero errato di argomenti genera un errore:

SELECT FLOOR(1, 2)
FROM DUAL;

Risultato:

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 ha anche un CEIL() funzione che restituisce il numero intero più piccolo maggiore o uguale al suo argomento.