V SQL Serveru T-SQL ROUND()
funkce umožňuje zaokrouhlit číslo na zadanou délku nebo přesnost.
Jako argument uvedete číslo a také délku, na kterou chcete číslo zaokrouhlit. Funkce také přijímá volitelný třetí argument, který vám umožňuje určit, zda je číslo zaokrouhleno nebo zkráceno.
Syntaxe
Syntaxe vypadá takto:
ROUND ( numeric_expression , length [ ,function ] )
Kde argumenty mají následující definice:
- numerický_výraz
- Je vyjádřením přesné číselné nebo přibližné číselné kategorie datového typu, kromě bitu datový typ.
- délka
- Je přesnost, se kterou numerický_výraz má být zaokrouhleno. Tento argument musí být výraz typu tinyint , mallint nebo int . Když je to kladné číslo, numerický_výraz je zaokrouhleno na počet desetinných míst zadaný tímto argumentem. Pokud je to záporné číslo, numerický_výraz je zaokrouhleno na levé straně desetinné čárky, jak je určeno tímto argumentem.
- funkce
- Je typ operace, která se má provést. Toto musí být tinyint , mallint nebo int . Když je tento argument vynechán nebo má hodnotu 0 (výchozí), numerický_výraz je zaoblená. Když je zadaná hodnota jiná než 0, numerický_výraz je zkrácený.
Příklad 1 – Základní použití
Zde je základní příklad, který demonstruje, jak tato funkce funguje.
SELECT ROUND(1.49, 1) Result;
Výsledek:
+----------+ | Result | |----------| | 1.50 | +----------+
V tomto případě je číslo zaokrouhleno nahoru.
Příklad 2 – Nula desetinných míst
Pokud nastavíme druhý argument na nulu, stane se toto:
SELECT ROUND(1.49, 0) Result;
Výsledek:
+----------+ | Result | |----------| | 1.00 | +----------+
Je to proto, že jsme zadali nulu zlomkových částí, kterými se má číslo zaokrouhlit.
A co se stane, když změním počáteční číslo na 1,50:
SELECT ROUND(1.50, 0) Result;
Výsledek:
+----------+ | Result | |----------| | 2.00 | +----------+
Příklad 3 – Více desetinných míst
Zde je příklad, kdy číslo, které má být zaokrouhleno, obsahuje více desetinných míst.
SELECT ROUND(1.234, 2) Result;
Výsledek:
+----------+ | Result | |----------| | 1.230 | +----------+
A toto se stane, když zvětším poslední číslici na 5:
SELECT ROUND(1.235, 2) Result;
Výsledek:
+----------+ | Result | |----------| | 1.240 | +----------+
Samozřejmě bychom mohli použít mnohem více desetinných míst. Mohli bychom například oříznout mnoho desetinných míst.
SELECT ROUND(1.23456789123456789, 8) Result;
Výsledek:
+---------------------+ | Result | |---------------------| | 1.23456789000000000 | +---------------------+
Příklad 4 – Zkrácení (tj. použití třetího argumentu)
Jak již bylo zmíněno, můžeme poskytnout třetí argument, který určí, zda je výsledek zkrácen nebo pouze zaokrouhlen. Předchozí příklady jsou všechny zaokrouhlené, protože jsme nespecifikovali třetí argument. Když vynecháme třetí argument, použije se hodnota 0 (což znamená zaokrouhlit výsledek). Pokud zadáme hodnotu jinou než 0, bude výsledek zkrácen.
SELECT ROUND(1.236, 2) 'Rounded (by default)', ROUND(1.236, 2, 0) 'Rounded (explicitly)', ROUND(1.236, 2, 1) 'Truncated';
Výsledek:
+------------------------+------------------------+-------------+ | Rounded (by default) | Rounded (explicitly) | Truncated | |------------------------+------------------------+-------------| | 1.240 | 1.240 | 1.230 | +------------------------+------------------------+-------------+
Příklad 5 – Použití záporné hodnoty pro druhý argument
Zde je návod, jak můžeme použít zápornou hodnotu u druhého argumentu, abychom způsobili, že části nezlomkové části budou zaokrouhleny na nulu.
SELECT ROUND(123.456, -1) Result;
Výsledek:
+----------+ | Result | |----------| | 120.000 | +----------+
A takto se to zaokrouhlí, když zvýšíme 3
až 5
nebo více.
SELECT ROUND(125.456, -1) Result;
Výsledek:
+----------+ | Result | |----------| | 130.000 | +----------+
Můžete to udělat, i když číslo neobsahuje žádnou zlomkovou část.
SELECT ROUND(125, -1) Result;
Výsledek:
+----------+ | Result | |----------| | 130 | +----------+
Příklad 6 – Zaokrouhlení záporných čísel vs. kladných čísel
Jak je vidět v předchozích příkladech, při použití kladných čísel je hodnota se zlomkovou částí 0,5 nebo větší zaokrouhlena nahoru na další celé číslo.
Při použití záporných čísel se však takové hodnoty zaokrouhlí dolů .
SELECT ROUND(1.50, 0) Positive, ROUND(-1.50, 0) Negative;
Výsledek:
+------------+------------+ | Positive | Negative | |------------+------------| | 2.00 | -2.00 | +------------+------------+