sql >> Databasteknik >  >> RDS >> Sqlserver

4 funktioner för att formatera ett tal till 2 decimaler i SQL Server

När vi använder T-SQL med SQL Server kan vi formatera tal med olika metoder, beroende på vårt önskade format.

Nedan finns fyra funktioner som kan användas för att formatera ett tal med två decimaler i SQL Server.

CAST() Funktion

Det mest uppenbara sättet att göra det är att konvertera talet till en decimaltyp. Två funktioner som kan göra detta åt oss är CAST() och CONVERT() .

Här är ett exempel på hur du använder CAST() :

SELECT CAST(275 AS DECIMAL(5, 2));

Resultat:

275.00

Vi kan använda denna metod även om talet redan är ett decimalvärde men med fler decimaler.

En sak att komma ihåg är dock att om du minskar antalet decimaler från ett tal med mer än två decimaler, kan du sluta med att den andra decimalen avrundas uppåt:

SELECT CAST(275.4567 AS DECIMAL(5, 2));

Resultat:

275.46

CONVERT() Funktion

Här använder vi CONVERT() för att göra samma sak – konvertera talet till decimal:

SELECT CONVERT(DECIMAL(5, 2), 275);

Resultat:

275.00

FORMAT() Funktion

Ett annat sätt att formatera ett tal med två decimaler är att använda FORMAT() funktion:

SELECT FORMAT(275, 'N2');

Resultat:

275.00

Denna funktion konverterar faktiskt numret till en sträng, så tekniskt sett är resultatet inte en numerisk typ.

N2 del kallas en formatsträng. I det här fallet, N är för nummer och 2 är för antalet decimaler (du kan öka eller minska detta efter behov).

Samma teknik kan användas för att minska decimalerna till två, från ett tal med fler decimaler:

SELECT FORMAT(275.4567, 'N2');

Resultat:

275.46

Det har avrundats uppåt, precis som när vi konverterade talet i det andra exemplet.

Ett annat sätt att göra det är att använda en anpassad formatsträng. Med anpassade formatsträngar kan du ange ett format som kanske inte stöds av en standardformatsträng.

Här är ett exempel på hur du använder anpassade formatsträngar:

SELECT 
    FORMAT(275, '###.##') AS "###.##",
    FORMAT(275, '000.00') AS "000.00",
    FORMAT(275.4567, '###.##') AS "###.##",
    FORMAT(275.4567, '000.00') AS "000.00";

Resultat:

+----------+----------+----------+----------+
| ###.##   | 000.00   | ###.##   | 000.00   |
|----------+----------+----------+----------|
| 275      | 275.00   | 275.46   | 275.46   |
+----------+----------+----------+----------+

Vi kan se att det finns en skillnad mellan att använda # och 0 i formatsträngen. # formatspecifikationen undertrycker alla obetydliga nollor medan 0 formatspecifikationen gör det inte.

Men kanske ännu viktigare (för denna artikels syften), 0 formatspecifikationen låter dig lägga till obetydliga nollor om de inte finns i det ursprungliga numret. Därför kan den användas för att lägga till två decimaler till ett heltal (som framgår av exemplet ovan).

STR() Funktion

Ett annat sätt att formatera ett tal med två decimaler är att använda STR() funktion:

SELECT STR(275, 6, 2);

Resultat:

275.00

Denna funktion returnerar teckendata som konverterats från numeriska data. Teckendata är högerjusterad, med en specificerad längd och decimalprecision.

Det första argumentet är ett uttryck för flytdatatyp med en decimalkomma.

Det andra argumentet är den totala längden. Detta inkluderar decimalkomma, tecken, siffror och mellanslag. Standard är 10.

Det tredje argumentet är antalet platser till höger om decimalkomma. Detta måste vara mindre än eller lika med 16.


  1. Får varning:Nullvärde elimineras av en sammanlagd eller annan SET-operation

  2. Hur gör man en uppdatering + går med i PostgreSQL?

  3. Bindning av parametrar till Oracle Dynamic SQL

  4. Hur viktig är ordningen på kolumner i index?