RUNDA (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar ett numeriskt värde, avrundat till angiven längd eller precision.

Transact-SQL syntaxkonventioner

Syntax

ROUND ( numeric_expression , length [ , function ] )

Arguments

numeric_expression

Ett uttryck för den exakta numeriska eller approximativa numeriska datatypkategorin.

length

Den precision med vilken numeric_expression ska avrundas. längd måste vara ett uttryck av typen tinyint, smallint eller int. När längden är ett positivt tal avrundas numeric_expression till antalet decimalpositioner som anges av längden. När längden är ett negativt tal avrundas numeric_expression på vänster sida av decimalpunkten, enligt längden.

funktion

Vilken typ av operation som ska utföras. Funktionen måste vara Tinyint, Smallint eller Int. När funktionen utelämnas eller har värdet ( 0 standard), avrundas numeric_expression . När ett annat värde än 0 anges är numeric_expression trunkerat.

Returtyper

Returnerar följande datatyper.

Uttrycksresultat Returtyp
tinyint int
smallint int
int int
bigint bigint
Decimal - och numerisk kategori (P, S) Decimal(p, s)
Kategori pengar och småpengar pengar
Flytt och reell kategori float

Anmärkningar

  • ROUND Returnerar alltid ett värde. Om längden är negativ och större än antalet siffror före decimalpunkten, ROUND återger 0.

    Example Result
    ROUND(748.58, -4) 0
  • ROUND returnerar en avrundad numeric_expression, oavsett datatyp, när längden är ett negativt tal.

    Examples Result
    ROUND(748.58, -1) 750.00
    ROUND(748.58, -2) 700.00
    ROUND(748.58, -3) Resulterar i ett aritmetiskt överflöd, eftersom 748,58 som standard går till decimal(5, 2), vilket inte kan returnera 1000.00.
  • För att avrunda upp till fyra siffror, ändra datatypen för indatan. Till exempel:

    SELECT ROUND(CAST (748.58 AS DECIMAL (6, 2)), -3);
    

    Här är resultatet.

    1000.00
    
  • ROUND Bryter oavgjort genom att avrunda halvvägen från noll (även kallat kommersiell avrundning).

    Examples Result
    ROUND(1.15, 1) 1.2
    ROUND(-1.15, 1) -1.2

Examples

A. Använd ROUND och uppskattningar

Följande exempel visar två uttryck som visar genom att använda ROUND, den sista siffran är alltid en uppskattning.

SELECT ROUND(123.9994, 3),
       ROUND(123.9995, 3);
GO

Här är resultatet.

----------- -----------
123.9990    124.0000

B. Använd RUND- och avrundningsapproximationer

Följande exempel visar avrundning och approximationer.

SELECT ROUND(123.4545, 2),
       ROUND(123.45, -2);

Här är resultatet.

----------  ----------
123.4500    100.00

C. Använd RUND för att förkorta

Följande exempel använder två SELECT påståenden för att visa skillnaden mellan avrundning och trunkering. Det första påståendet rundar av resultatet. Det andra påståendet förkortar resultatet.

SELECT ROUND(150.75, 0);
GO

Här är resultatet.

151.00
SELECT ROUND(150.75, 0, 1);
GO

Här är resultatet.

150.00