Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ROUND() Примери в SQL Server

В SQL Server, T-SQL ROUND() функцията ви позволява да закръглите число до определена дължина или точност.

Вие предоставяте числото като аргумент, както и дължината, до която искате числото да бъде закръглено. Функцията също така приема незадължителен трети аргумент, който ви позволява да укажете дали числото е закръглено или съкратено.

Синтаксис

Синтаксисът е така:

ROUND ( numeric_expression , length [ ,function ] )  

Където аргументите имат следните дефиниции:

числов_израз
Е израз на точната числова или приблизителна категория на числови тип данни, с изключение на бита тип данни.
дължина
Е точността, с която числово_израз трябва да се закръгли. Този аргумент трябва да е израз от тип tinyint ,малък , или int . Когато е положително число, числово_израз се закръглява до броя на десетичните позиции, посочени от този аргумент. Когато е отрицателно число, числово_израз е закръглено от лявата страна на десетичната запетая, както е посочено от този аргумент.
функция
Е типът на операцията, която трябва да се извърши. Това трябва да е tinyint ,малък , или int . Когато този аргумент е пропуснат или има стойност 0 (по подразбиране), числово_израз е закръглена. Когато е посочена стойност, различна от 0, числово_израз е съкратено.

Пример 1 – Основна употреба

Ето основен пример, за да демонстрирате как работи тази функция.

SELECT ROUND(1.49, 1) Result;

Резултат:

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

В този случай числото се закръглява нагоре.

Пример 2 – нула десетични знаци

Ако зададем втория аргумент на нула, ето какво се случва:

SELECT ROUND(1.49, 0) Result;

Резултат:

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

Това е така, защото посочихме нулеви дробни части, с които да закръглим числото.

И ето какво се случва, ако променя първоначалното число на 1,50:

SELECT ROUND(1.50, 0) Result;

Резултат:

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

Пример 3 – Повече десетични знаци

Ето пример, при който числото, което трябва да се закръгли, съдържа повече десетични знака.

SELECT ROUND(1.234, 2) Result;

Резултат:

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

И ето какво се случва, когато увелича последната цифра на 5:

SELECT ROUND(1.235, 2) Result;

Резултат:

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

Разбира се, бихме могли да използваме много повече десетични знаци. Например бихме могли да отрежем много десетични знака.

SELECT ROUND(1.23456789123456789, 8) Result;

Резултат:

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

Пример 4 – Отрязване (т.е. използване на трети аргумент)

Както споменахме, можем да предоставим трети аргумент, за да посочим дали резултатът е съкратен или просто закръглен. Всички предишни примери са закръглени, защото не сме посочили трети аргумент. Когато пропуснем третия аргумент, се използва стойност 0 (което означава закръгляване на резултата). Ако предоставим стойност, различна от 0, резултатът се съкращава.

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

Резултат:

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

Пример 5 – Използване на отрицателна стойност за втория аргумент

Ето как можем да използваме отрицателна стойност на втория аргумент, за да накараме части от недробната част да бъдат закръглени до нула.

SELECT ROUND(123.456, -1) Result;

Резултат:

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

И ето как се закръглява, ако увеличим 3 до 5 или повече.

SELECT ROUND(125.456, -1) Result;

Резултат:

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

Можете да направите това дори ако числото не съдържа дробна част.

SELECT ROUND(125, -1) Result;

Резултат:

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

Пример 6 – Закръгляване на отрицателни числа спрямо положителни числа

Както се вижда в предишните примери, когато се използват положителни числа, стойност с дробна част от .5 или по-голяма се закръглява до следващото цяло число.

Въпреки това, когато използвате отрицателни числа, тези стойности се закръгляват надолу .

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

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Примери за преобразуване на „smalldatetime“ в „datetime“ в SQL Server (T-SQL)

  2. ListAGG в SQLSERVER

  3. Присъединяване към MAX запис за дата в групата

  4. Задайте опция 9 в съхранената процедура на SQL Server, като използвате WinHttp.WinHttpRequest.5.1 за TLS 1.2

  5. Как да настроите производителността на SQL Server, Azure SQL база данни и Amazon RDS