Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

ROUND()-Beispiele in SQL Server

In SQL Server das T-SQL ROUND() Mit dieser Funktion können Sie eine Zahl auf eine bestimmte Länge oder Genauigkeit runden.

Sie geben die Zahl als Argument sowie die Länge an, auf die die Zahl gerundet werden soll. Die Funktion akzeptiert auch ein optionales drittes Argument, mit dem Sie angeben können, ob die Zahl gerundet oder abgeschnitten wird.

Syntax

Die Syntax lautet wie folgt:

ROUND ( numeric_expression , length [ ,function ] )  

Wobei die Argumente die folgenden Definitionen haben:

numerischer_ausdruck
Ist ein Ausdruck der genauen numerischen oder ungefähren numerischen Datentypkategorie, mit Ausnahme des Bits Datentyp.
Länge
Die Genauigkeit von numeric_expression ist zu runden. Dieses Argument muss ein Ausdruck vom Typ tinyint sein , Smallint , oder int . Wenn es sich um eine positive Zahl handelt, numerischer_ausdruck wird auf die durch dieses Argument angegebene Anzahl von Dezimalstellen gerundet. Wenn es sich um eine negative Zahl handelt, numerischer_ausdruck wird auf der linken Seite des Dezimalpunkts gerundet, wie durch dieses Argument angegeben.
Funktion
Die Art der auszuführenden Operation. Dies muss tinyint sein , Smallint , oder int . Wenn dieses Argument ausgelassen wird oder den Wert 0 (Standard) hat, wird numerischer_ausdruck ist gerundet. Wenn ein anderer Wert als 0 angegeben wird, numerischer_ausdruck wird abgeschnitten.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie diese Funktion funktioniert.

SELECT ROUND(1.49, 1) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 1.50     |
+----------+

In diesem Fall wird aufgerundet.

Beispiel 2 – Null Dezimalstellen

Wenn wir das zweite Argument auf Null setzen, passiert Folgendes:

SELECT ROUND(1.49, 0) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 1.00     |
+----------+

Das liegt daran, dass wir null Nachkommastellen angegeben haben, mit denen die Zahl gerundet werden soll.

Und Folgendes passiert, wenn ich die Anfangszahl auf 1,50 ändere:

SELECT ROUND(1.50, 0) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 2.00     |
+----------+

Beispiel 3 – Mehr Dezimalstellen

Hier ist ein Beispiel, bei dem die zu rundende Zahl mehr Dezimalstellen enthält.

SELECT ROUND(1.234, 2) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 1.230    |
+----------+

Und das passiert, wenn ich die letzte Ziffer auf 5 erhöhe:

SELECT ROUND(1.235, 2) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 1.240    |
+----------+

Natürlich könnten wir viel mehr Dezimalstellen verwenden. Zum Beispiel könnten wir viele Dezimalstellen nach unten kürzen.

SELECT ROUND(1.23456789123456789, 8) Result;

Ergebnis:

+---------------------+
| Result              |
|---------------------|
| 1.23456789000000000 |
+---------------------+

Beispiel 4 – Trunkierung (d. h. Verwendung eines dritten Arguments)

Wie bereits erwähnt, können wir ein drittes Argument angeben, um anzugeben, ob das Ergebnis abgeschnitten oder nur gerundet wird. Die vorherigen Beispiele sind alle gerundet, weil wir kein drittes Argument angegeben haben. Wenn wir das dritte Argument weglassen, wird ein Wert von 0 verwendet (was bedeutet, dass das Ergebnis gerundet wird). Wenn wir einen anderen Wert als 0 angeben, wird das Ergebnis abgeschnitten.

SELECT 
  ROUND(1.236, 2) 'Rounded (by default)',
  ROUND(1.236, 2, 0) 'Rounded (explicitly)',
  ROUND(1.236, 2, 1) 'Truncated';

Ergebnis:

+------------------------+------------------------+-------------+
| Rounded (by default)   | Rounded (explicitly)   | Truncated   |
|------------------------+------------------------+-------------|
| 1.240                  | 1.240                  | 1.230       |
+------------------------+------------------------+-------------+

Beispiel 5 – Verwenden eines negativen Werts für das zweite Argument

So können wir einen negativen Wert für das zweite Argument verwenden, um zu bewirken, dass Teile des nicht gebrochenen Teils auf Null gerundet werden.

SELECT ROUND(123.456, -1) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 120.000  |
+----------+

Und so wird es gerundet, wenn wir die 3 erhöhen bis 5 oder mehr.

SELECT ROUND(125.456, -1) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 130.000  |
+----------+

Dies ist auch möglich, wenn die Zahl keinen Bruchteil enthält.

SELECT ROUND(125, -1) Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 130      |
+----------+

Beispiel 6 – Runden negativer Zahlen vs. positiver Zahlen

Wie in den vorherigen Beispielen zu sehen ist, wird bei der Verwendung positiver Zahlen ein Wert mit einem Bruchteil von 0,5 oder mehr auf die nächste Ganzzahl aufgerundet.

Bei Verwendung negativer Zahlen werden solche Werte jedoch abgerundet .

SELECT 
  ROUND(1.50, 0) Positive,
  ROUND(-1.50, 0) Negative;

Ergebnis:

+------------+------------+
| Positive   | Negative   |
|------------+------------|
| 2.00       | -2.00      |
+------------+------------+