W SQL Server funkcja T-SQL ROUND()
funkcja pozwala zaokrąglić liczbę do określonej długości lub precyzji.
Podajesz liczbę jako argument, a także długość, do której chcesz zaokrąglić liczbę. Funkcja akceptuje również opcjonalny trzeci argument, który pozwala określić, czy liczba jest zaokrąglana, czy skrócona.
Składnia
Składnia wygląda tak:
ROUND ( numeric_expression , length [ ,function ] )
Gdzie argumenty mają następujące definicje:
- wyrażenie_numeryczne
- Jest wyrażeniem dokładnie numerycznej lub przybliżonej numerycznej kategorii danych, z wyjątkiem bitu typ danych.
- długość
- Czy precyzja, z jaką numeric_expression ma być zaokrąglona. Ten argument musi być wyrażeniem typu tinyint , mały lub int . Jeśli jest to liczba dodatnia, numeric_expression jest zaokrąglana do liczby miejsc dziesiętnych określonych przez ten argument. Jeśli jest to liczba ujemna, numeric_expression jest zaokrąglana po lewej stronie przecinka dziesiętnego, jak określono w tym argumencie.
- funkcja
- Jest typem operacji do wykonania. To musi być niewielkie , mały lub int . Gdy ten argument jest pominięty lub ma wartość 0 (domyślnie), numeric_expression jest zaokrąglony. Gdy określono wartość inną niż 0, numeric_expression jest obcięty.
Przykład 1 – Podstawowe użycie
Oto podstawowy przykład pokazujący, jak działa ta funkcja.
SELECT ROUND(1.49, 1) Result;
Wynik:
+----------+ | Result | |----------| | 1.50 | +----------+
W tym przypadku liczba jest zaokrąglana w górę.
Przykład 2 – Zero miejsc dziesiętnych
Jeśli ustawimy drugi argument na zero, oto co się dzieje:
SELECT ROUND(1.49, 0) Result;
Wynik:
+----------+ | Result | |----------| | 1.00 | +----------+
Dzieje się tak, ponieważ określiliśmy zerowe części ułamkowe, którymi należy zaokrąglić liczbę.
A oto co się stanie, jeśli zmienię początkową liczbę na 1,50:
SELECT ROUND(1.50, 0) Result;
Wynik:
+----------+ | Result | |----------| | 2.00 | +----------+
Przykład 3 – Więcej miejsc dziesiętnych
Oto przykład, w którym liczba do zaokrąglenia zawiera więcej miejsc po przecinku.
SELECT ROUND(1.234, 2) Result;
Wynik:
+----------+ | Result | |----------| | 1.230 | +----------+
A oto, co się stanie, gdy zwiększę ostatnią cyfrę do 5:
SELECT ROUND(1.235, 2) Result;
Wynik:
+----------+ | Result | |----------| | 1.240 | +----------+
Oczywiście moglibyśmy użyć znacznie więcej miejsc po przecinku. Na przykład możemy skrócić wiele miejsc po przecinku.
SELECT ROUND(1.23456789123456789, 8) Result;
Wynik:
+---------------------+ | Result | |---------------------| | 1.23456789000000000 | +---------------------+
Przykład 4 – Obcięcie (tj. użycie trzeciego argumentu)
Jak wspomniano, możemy podać trzeci argument, aby określić, czy wynik jest obcięty, czy tylko zaokrąglony. Wszystkie poprzednie przykłady są zaokrąglone, ponieważ nie podaliśmy trzeciego argumentu. Gdy pominiemy trzeci argument, używana jest wartość 0 (co oznacza zaokrąglenie wyniku). Jeśli podamy wartość inną niż 0, wynik zostanie obcięty.
SELECT ROUND(1.236, 2) 'Rounded (by default)', ROUND(1.236, 2, 0) 'Rounded (explicitly)', ROUND(1.236, 2, 1) 'Truncated';
Wynik:
+------------------------+------------------------+-------------+ | Rounded (by default) | Rounded (explicitly) | Truncated | |------------------------+------------------------+-------------| | 1.240 | 1.240 | 1.230 | +------------------------+------------------------+-------------+
Przykład 5 – użycie wartości ujemnej w drugim argumencie
Oto jak możemy użyć wartości ujemnej drugiego argumentu, aby spowodować zaokrąglenie części nieułamkowej do zera.
SELECT ROUND(123.456, -1) Result;
Wynik:
+----------+ | Result | |----------| | 120.000 | +----------+
A oto jak to się zaokrągla, jeśli zwiększymy 3
do 5
lub więcej.
SELECT ROUND(125.456, -1) Result;
Wynik:
+----------+ | Result | |----------| | 130.000 | +----------+
Możesz to zrobić, nawet jeśli liczba nie zawiera części ułamkowej.
SELECT ROUND(125, -1) Result;
Wynik:
+----------+ | Result | |----------| | 130 | +----------+
Przykład 6 – Zaokrąglanie liczb ujemnych a liczb dodatnich
Jak widać w poprzednich przykładach, podczas używania liczb dodatnich, wartość z częścią ułamkową 0,5 lub większą jest zaokrąglana w górę do następnej liczby całkowitej.
Jednak w przypadku liczb ujemnych takie wartości są zaokrąglane w dół .
SELECT ROUND(1.50, 0) Positive, ROUND(-1.50, 0) Negative;
Wynik:
+------------+------------+ | Positive | Negative | |------------+------------| | 2.00 | -2.00 | +------------+------------+