sql >> Databáze >  >> RDS >> Sqlserver

ROUND() Příklady v SQL Server

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 35 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      |
+------------+------------+

  1. Chyba hodnoty při importu dat do tabulky postgres pomocí psycopg2

  2. Je lepší vytvořit index před naplněním tabulky daty, nebo poté, co jsou data na svém místě?

  3. Skalární vkládání UDF v SQL Server 2019

  4. Načítání třídy com.mysql.jdbc.Driver ... je zastaralá zpráva