ROUND (Transact-SQL)
Gibt einen numerischen Wert zurück, der auf die angegebene Länge oder Genauigkeit gerundet wurde.
Syntax
ROUND (numeric_expression , length [ ,function ] )
Argumente
numeric_expression
Ein Ausdruck der genauen numerischen oder ungefähren numerischen Datentypkategorie, mit Ausnahme des Datentyps bit.length
Die Genauigkeit, auf die numeric_expression gerundet werden soll. length muss ein Ausdruck vom Datentyp tinyint, smallint oder int sein. Wenn length eine positive Zahl ist, wird numeric_expression auf die Anzahl der mit length angegebenen Dezimalstellen gerundet. Wenn length eine negative Zahl ist, wird numeric_expression auf der linken Seite des Dezimaltrennzeichens gemäß der Angabe von length gerundet.function
Der Typ des Vorgangs, der ausgeführt werden soll. function muss den Datentyp tinyint, smallint oder int haben. Wenn function ausgelassen wird oder den Wert 0 hat (Standardeinstellung), wird numeric_expression gerundet. Wird nicht der Wert 0 angegeben, wird numeric_expression abgeschnitten.
Rückgabetypen
Gibt die folgenden Datentypen zurück.
Ausdrucksergebnis |
Rückgabetyp |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
Kategorien decimal und numeric (p, s) |
decimal(p, s) |
Kategorien money und smallmoney |
money |
Kategorien float und real |
float |
Hinweise
ROUND gibt immer einen Wert zurück. Ist length negativ und sein Wert größer als die Anzahl der Stellen vor dem Dezimaltrennzeichen, gibt ROUND den Wert 0 zurück.
Beispiel |
Ergebnis |
---|---|
ROUND(748.58, -4) |
0 |
Unabhängig vom Datentyp gibt ROUND numeric_expression gerundet zurück, wenn length eine negative Zahl ist.
Beispiele |
Ergebnis |
---|---|
ROUND(748.58, -1) |
750.00 |
ROUND(748.58, -2) |
700.00 |
ROUND(748.58, -3) |
Verursacht einen arithmetischen Überlauffehler, da 748.58 standardmäßig zu decimal(5,2) wird und eine Rückgabe von 1000.00 nicht möglich ist. |
Um bis auf 4 Stellen aufzurunden, ändern Sie den Datentyp für die Eingabe. Beispiel: SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); |
1000.00 |
Beispiele
A. Verwenden von ROUND und Schätzwerten
Im folgenden Beispiel werden zwei Ausdrücke gezeigt, die veranschaulichen, dass mit ROUND die letzte Ziffer immer ein Näherungswert ist.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
GO
Dies ist das Resultset.
----------- -----------
123.9990 124.0000
B. Verwenden von ROUND und gerundeten Näherungswerten
Das folgende Beispiel zeigt das Runden und die Näherungsberechnung von Werten.
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);
GO
Dies ist das Resultset.
----------
123.4500
(1 row(s) affected)
--------
100.00
(1 row(s) affected)
C. Verwenden von ROUND zum Kürzen
Das folgende Beispiel verwendet zwei SELECT-Anweisungen, um den Unterschied zwischen dem Runden und dem Kürzen zu verdeutlichen. Die erste Anweisung rundet das Ergebnis. Die zweite Anweisung kürzt das Ergebnis.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
Dies ist das Resultset.
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)