Når vi bruger T-SQL med SQL Server, kan vi formatere tal ved hjælp af forskellige metoder, afhængigt af vores ønskede format.
Nedenfor er fire funktioner, der kan bruges til at formatere et tal til to decimaler i SQL Server.
CAST()
Funktion
Den mest oplagte måde at gøre det på er at konvertere tallet til en decimaltype. To funktioner, der kan gøre dette for os, er CAST()
og CONVERT()
.
Her er et eksempel på brug af CAST()
:
SELECT CAST(275 AS DECIMAL(5, 2));
Resultat:
275,00
Vi kan bruge denne metode, selvom tallet allerede er en decimalværdi, men med flere decimaler.
Én ting at huske er dog, hvis du reducerer antallet af decimaler fra et tal med mere end to decimaler, så kan du ende med, at den anden decimal bliver rundet op:
SELECT CAST(275.4567 AS DECIMAL(5, 2));
Resultat:
275,46
CONVERT()
Funktion
Her bruger vi CONVERT()
for at gøre det samme – konverter tallet til decimal:
SELECT CONVERT(DECIMAL(5, 2), 275);
Resultat:
275,00
FORMAT()
Funktion
En anden måde at formatere et tal med to decimaler på er at bruge FORMAT()
funktion:
SELECT FORMAT(275, 'N2');
Resultat:
275,00
Denne funktion konverterer faktisk tallet til en streng, så teknisk set er resultatet ikke en numerisk type.
N2
del omtales som en formatstreng. I dette tilfælde N
er for nummer og 2
er for antallet af decimaler (du kan øge eller mindske dette efter behov).
Den samme teknik kan bruges til at reducere decimalerne til to, fra et tal med flere decimaler:
SELECT FORMAT(275.4567, 'N2');
Resultat:
275,46
Det er blevet rundet op, ligesom da vi konverterede tallet i det andet eksempel.
En anden måde at gøre det på er at bruge en tilpasset formatstreng. Brugerdefinerede formatstrenge giver dig mulighed for at angive et format, der muligvis ikke understøttes af en standardformatstreng.
Her er et eksempel på brug af tilpassede formatstrenge:
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, at der er forskel på at bruge #
og 0
i formatstrengen. #
formatspecifikationen undertrykker alle ubetydelige nuller, mens 0
formatspecifikationen gør det ikke.
Men måske endnu vigtigere (til denne artikels formål), 0
formatspecifikationen giver dig mulighed for at tilføje ubetydelige nuller, hvis de ikke er til stede i det oprindelige tal. Derfor kan den bruges til at tilføje to decimaler til et heltal (som det ses i ovenstående eksempel).
STR()
Funktion
En anden måde at formatere et tal til to decimaler på er at bruge STR()
funktion:
SELECT STR(275, 6, 2);
Resultat:
275,00
Denne funktion returnerer tegndata konverteret fra numeriske data. Tegndataene er højrejusteret med en specificeret længde og decimalpræcision.
Det første argument er et udtryk for flydende datatype med et decimaltegn.
Det andet argument er den samlede længde. Dette inkluderer decimaltegn, tegn, cifre og mellemrum. Standard er 10.
Det tredje argument er antallet af pladser til højre for decimaltegnet. Dette skal være mindre end eller lig med 16.