sql >> Database teknologi >  >> RDS >> Sqlserver

ROUND() Eksempler i SQL Server

I SQL Server, T-SQL ROUND() funktionen giver dig mulighed for at afrunde et tal til en specificeret længde eller præcision.

Du angiver tallet som et argument, samt den længde, du ønsker, at tallet skal afrundes til. Funktionen accepterer også et valgfrit tredje argument, der giver dig mulighed for at angive, om tallet er afrundet eller trunkeret.

Syntaks

Syntaksen ser sådan ud:

ROUND ( numeric_expression , length [ ,function ] )  

Hvor argumenterne har følgende definitioner:

numerisk_udtryk
Er et udtryk for den nøjagtige numeriske eller omtrentlige numeriske datatypekategori, undtagen bit datatype.
længde
Er den præcision, som numerisk_udtryk til skal afrundes. Dette argument skal være et udtryk af typen tinyint , smallint eller int . Når det er et positivt tal, numerisk_udtryk er afrundet til antallet af decimaler angivet af dette argument. Når det er et negativt tal, numerisk_udtryk er afrundet på venstre side af decimaltegnet, som angivet af dette argument.
funktion
Er den type operation, der skal udføres. Dette skal være tinyint , smallint eller int . Når dette argument er udeladt eller har en værdi på 0 (standard), numerisk_udtryk er afrundet. Når en anden værdi end 0 er angivet, numerisk_udtryk er afkortet.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel for at demonstrere, hvordan denne funktion fungerer.

SELECT ROUND(1.49, 1) Result;

Resultat:

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

I dette tilfælde rundes tallet op.

Eksempel 2 – Nul decimaler

Hvis vi sætter det andet argument til nul, sker der her:

SELECT ROUND(1.49, 0) Result;

Resultat:

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

Dette skyldes, at vi har angivet nul-brøkdele, som tallet skal afrundes med.

Og her er, hvad der sker, hvis jeg ændrer det oprindelige tal til 1,50:

SELECT ROUND(1.50, 0) Result;

Resultat:

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

Eksempel 3 – Flere decimaler

Her er et eksempel, hvor tallet, der skal afrundes, indeholder flere decimaler.

SELECT ROUND(1.234, 2) Result;

Resultat:

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

Og her er, hvad der sker, når jeg øger det sidste ciffer til 5:

SELECT ROUND(1.235, 2) Result;

Resultat:

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

Selvfølgelig kunne vi bruge mange flere decimaler. For eksempel kunne vi trimme mange decimaler ned.

SELECT ROUND(1.23456789123456789, 8) Result;

Resultat:

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

Eksempel 4 – Trunkering (dvs. brug af et tredje argument)

Som nævnt kan vi give et tredje argument til at specificere, om resultatet er trunkeret eller blot afrundet. De foregående eksempler er alle afrundede, fordi vi ikke specificerede et tredje argument. Når vi udelader det tredje argument, bruges en værdi på 0 (hvilket betyder at afrunde resultatet). Hvis vi angiver en anden værdi end 0, afkortes resultatet.

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

Resultat:

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

Eksempel 5 – Brug af en negativ værdi til det andet argument

Sådan kan vi bruge en negativ værdi på det andet argument til at få dele af den ikke-brøkdel til at blive afrundet til nul.

SELECT ROUND(123.456, -1) Result;

Resultat:

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

Og her er, hvordan det bliver afrundet, hvis vi øger 3 til 5 eller mere.

SELECT ROUND(125.456, -1) Result;

Resultat:

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

Du kan gøre dette, selvom tallet ikke indeholder nogen brøkdel.

SELECT ROUND(125, -1) Result;

Resultat:

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

Eksempel 6 – Afrunding af negative tal vs. positive tal

Som det fremgår af de foregående eksempler, rundes en værdi med en brøkdel på 0,5 eller større op til det næste heltal, når der bruges positive tal.

Men når du bruger negative tal, rundes sådanne værdier ned .

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

Resultat:

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

  1. Oracle PL/SQL-samlinger - Opret indlejrede tabel i databasen

  2. Monitoring Galera Cluster for MySQL eller MariaDB - Understanding Metrics (Opdateret)

  3. Intel SSD, nu ude af sh..err, shamed listen

  4. Hvordan dekrypteres en adgangskode fra SQL-serveren?