Freigeben über


ROUND (Transact-SQL)

Gibt einen numerischen Wert zurück, der auf die angegebene Länge oder Genauigkeit gerundet wurde.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

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)