I SQL Server, T-SQL ROUND()
funktionen låter dig runda av ett tal till en angiven längd eller precision.
Du anger numret som ett argument, såväl som längden du vill att talet ska avrundas till. Funktionen accepterar också ett valfritt tredje argument som låter dig ange om talet är avrundat eller trunkerat.
Syntax
Syntaxen ser ut så här:
ROUND ( numeric_expression , length [ ,function ] )
Där argumenten har följande definitioner:
- numeriskt_uttryck
- Är ett uttryck för den exakta numeriska eller ungefärliga numeriska datatypkategorin, förutom biten datatyp.
- längd
- Är precisionen med vilken numeriskt_uttryck ska avrundas. Detta argument måste vara ett uttryck av typen tinyint , smallint , eller int . När det är ett positivt tal, numeric_expression avrundas till antalet decimaler som anges av detta argument. När det är ett negativt tal, numeric_expression är avrundad på vänster sida av decimalkomma, som specificeras av detta argument.
- funktion
- Är den typ av operation som ska utföras. Det här måste vara tinyint , smallint , eller int . När detta argument utelämnas eller har ett värde på 0 (standard), numeric_expression är rundad. När ett annat värde än 0 anges, numeric_expression är trunkerad.
Exempel 1 – Grundläggande användning
Här är ett grundläggande exempel för att visa hur den här funktionen fungerar.
SELECT ROUND(1.49, 1) Result;
Resultat:
+----------+ | Result | |----------| | 1.50 | +----------+
I det här fallet avrundas talet uppåt.
Exempel 2 – Noll decimaler
Om vi ställer in det andra argumentet till noll, händer det här:
SELECT ROUND(1.49, 0) Result;
Resultat:
+----------+ | Result | |----------| | 1.00 | +----------+
Detta beror på att vi angav nollbråkdelar som talet skulle avrundas med.
Och här är vad som händer om jag ändrar det initiala talet till 1,50:
SELECT ROUND(1.50, 0) Result;
Resultat:
+----------+ | Result | |----------| | 2.00 | +----------+
Exempel 3 – Fler decimaler
Här är ett exempel där talet som ska avrundas innehåller fler decimaler.
SELECT ROUND(1.234, 2) Result;
Resultat:
+----------+ | Result | |----------| | 1.230 | +----------+
Och här är vad som händer när jag ökar den sista siffran till 5:
SELECT ROUND(1.235, 2) Result;
Resultat:
+----------+ | Result | |----------| | 1.240 | +----------+
Naturligtvis skulle vi kunna använda många fler decimaler. Till exempel skulle vi kunna trimma ner många decimaler.
SELECT ROUND(1.23456789123456789, 8) Result;
Resultat:
+---------------------+ | Result | |---------------------| | 1.23456789000000000 | +---------------------+
Exempel 4 – Trunkering (dvs genom att använda ett tredje argument)
Som nämnts kan vi tillhandahålla ett tredje argument för att specificera om resultatet är trunkerat eller bara avrundat. De tidigare exemplen är alla avrundade eftersom vi inte angav ett tredje argument. När vi utelämnar det tredje argumentet används värdet 0 (vilket betyder att avrunda resultatet). Om vi anger ett annat värde än 0, trunkeras 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 | +------------------------+------------------------+-------------+
Exempel 5 – Använda ett negativt värde för det andra argumentet
Så här kan vi använda ett negativt värde på det andra argumentet för att få delar av den icke-bråkdelar att avrundas till noll.
SELECT ROUND(123.456, -1) Result;
Resultat:
+----------+ | Result | |----------| | 120.000 | +----------+
Och så här blir det avrundat om vi ökar 3
till 5
eller mer.
SELECT ROUND(125.456, -1) Result;
Resultat:
+----------+ | Result | |----------| | 130.000 | +----------+
Du kan göra detta även om talet inte innehåller någon bråkdel.
SELECT ROUND(125, -1) Result;
Resultat:
+----------+ | Result | |----------| | 130 | +----------+
Exempel 6 – Avrundning av negativa tal vs positiva tal
Som framgår av de föregående exemplen, när man använder positiva tal, avrundas ett värde med en bråkdel av 0,5 eller högre uppåt till nästa heltal.
Men när du använder negativa tal avrundas sådana värden nedåt .
SELECT ROUND(1.50, 0) Positive, ROUND(-1.50, 0) Negative;
Resultat:
+------------+------------+ | Positive | Negative | |------------+------------| | 2.00 | -2.00 | +------------+------------+