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

ROUND(numero) Funzione in Oracle

In Oracle, il ROUND(number) la funzione restituisce un numero arrotondato a un determinato numero di cifre decimali.

Per impostazione predefinita, arrotonda il numero a zero posizioni decimali, ma puoi fornire un argomento facoltativo che specifica il numero di posizioni decimali da utilizzare.

Oracle ha anche un ROUND(date) sintassi, che viene utilizzata nelle date. Questo articolo riguarda esclusivamente il ROUND(number) sintassi, che è usata sui numeri.

Sintassi

La sintassi è questa:

ROUND(n [, integer ])

Dove n può essere qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito implicitamente in un tipo di dati numerico e integer è un numero intero facoltativo che specifica il numero di cifre decimali da arrotondare n a.

Esempio

Ecco un esempio:

SELECT ROUND(7.85)
FROM DUAL;

Risultato:

   ROUND(7.85) 
______________ 
             8 

Valore negativo

Passandolo a un valore negativo si ottiene il seguente risultato:

SELECT ROUND(-7.85)
FROM DUAL;

Risultato:

   ROUND(-7.85) 
_______________ 
             -8

Secondo argomento

Ecco un esempio di come fornire un secondo argomento:

SELECT ROUND(7.85, 1)
FROM DUAL;

Risultato:

   ROUND(7.85,1) 
________________ 
             7.9

In questo caso, ho specificato che il risultato deve essere arrotondato al primo decimale.

Ecco un altro esempio con un numero maggiore di cifre decimali:

SELECT ROUND(3.14159265359, 4)
FROM DUAL;

Risultato:

   ROUND(3.14159265359,4) 
_________________________ 
                   3.1416

Arrotondamento negativo

Puoi anche specificare un valore negativo per il secondo argomento. In questo modo il numero viene arrotondato a sinistra della virgola decimale:

SELECT ROUND(75631, -3)
FROM DUAL;

Risultato:

   ROUND(75631,-3) 
__________________ 
             76000

Arrotondamento di argomenti non numerici

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

SELECT ROUND('Bruce')
FROM DUAL;

Risultato:

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

Tuttavia, possiamo arrotondare le date:esiste una versione data di questa funzione che ci consente di arrotondare le date.

Valori Nulli

Tentativo di arrotondare null restituisce null e provando ad arrotondare un numero per null risulta anche null :

SET NULL 'null';

SELECT 
    ROUND(null),
    ROUND(null, 2),    
    ROUND(2.345, null)
FROM DUAL;

Risultato:

   ROUND(NULL)    ROUND(NULL,2)    ROUND(2.345,NULL) 
______________ ________________ ____________________ 
          null             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 ROUND() senza passare alcun argomento restituisce un errore:

SELECT ROUND()
FROM DUAL;

Risultato:

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:

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

SELECT ROUND(1.34, 2, 3)
FROM DUAL;

Risultato:

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: