Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ROUND(number) Funktion in Oracle

In Oracle die ROUND(number) Die Funktion gibt eine auf eine bestimmte Anzahl von Dezimalstellen gerundete Zahl zurück.

Standardmäßig wird die Zahl auf null Dezimalstellen gerundet, aber Sie können ein optionales Argument angeben, das die Anzahl der zu verwendenden Dezimalstellen angibt.

Oracle hat auch ein ROUND(date) Syntax, die für Datumsangaben verwendet wird. In diesem Artikel geht es ausschließlich um die ROUND(number) Syntax, die für Zahlen verwendet wird.

Syntax

Die Syntax lautet wie folgt:

ROUND(n [, integer ])

Wobei n kann ein beliebiger numerischer Datentyp oder ein beliebiger nicht numerischer Datentyp sein, der implizit in einen numerischen Datentyp konvertiert werden kann, und integer ist eine optionale Ganzzahl, die die Anzahl der Dezimalstellen zum Runden von n angibt zu.

Beispiel

Hier ist ein Beispiel:

SELECT ROUND(7.85)
FROM DUAL;

Ergebnis:

   ROUND(7.85) 
______________ 
             8 

Negativer Wert

Das Umschalten auf einen negativen Wert führt zu folgendem Ergebnis:

SELECT ROUND(-7.85)
FROM DUAL;

Ergebnis:

   ROUND(-7.85) 
_______________ 
             -8

Zweites Argument

Hier ist ein Beispiel für die Bereitstellung eines zweiten Arguments:

SELECT ROUND(7.85, 1)
FROM DUAL;

Ergebnis:

   ROUND(7.85,1) 
________________ 
             7.9

In diesem Fall habe ich angegeben, dass das Ergebnis auf eine Dezimalstelle gerundet werden soll.

Hier ist ein weiteres Beispiel mit einer größeren Anzahl von Dezimalstellen:

SELECT ROUND(3.14159265359, 4)
FROM DUAL;

Ergebnis:

   ROUND(3.14159265359,4) 
_________________________ 
                   3.1416

Negative Rundung

Sie können für das zweite Argument auch einen negativen Wert angeben. Dadurch wird die Zahl links vom Dezimalpunkt gerundet:

SELECT ROUND(75631, -3)
FROM DUAL;

Ergebnis:

   ROUND(75631,-3) 
__________________ 
             76000

Rundung von nicht numerischen Argumenten

Folgendes passiert, wenn wir versuchen, ein nicht numerisches Argument zu runden, das nicht in einen numerischen Datentyp konvertiert werden kann:

SELECT ROUND('Bruce')
FROM DUAL;

Ergebnis:

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

Wir können jedoch Datumsangaben runden – es gibt eine Datumsversion dieser Funktion, mit der wir Datumsangaben runden können.

Nullwerte

Versuch, null zu runden gibt null zurück , und versuchen, eine Zahl durch null zu runden ergibt auch null :

SET NULL 'null';

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

Ergebnis:

   ROUND(NULL)    ROUND(NULL,2)    ROUND(2.345,NULL) 
______________ ________________ ____________________ 
          null             null                 null 

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Falsche Argumentanzahl

Aufruf von ROUND() ohne Übergabe von Argumenten gibt einen Fehler zurück:

SELECT ROUND()
FROM DUAL;

Ergebnis:

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:

Und das Übergeben der falschen Anzahl von Argumenten führt zu einem Fehler:

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

Ergebnis:

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: