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: