sql >> Database >  >> RDS >> Sqlserver

4 functies om een ​​getal op te maken tot 2 decimalen in SQL Server

Wanneer we T-SQL met SQL Server gebruiken, kunnen we getallen op verschillende manieren opmaken, afhankelijk van de gewenste opmaak.

Hieronder staan ​​vier functies die kunnen worden gebruikt om een ​​getal tot op twee decimalen in SQL Server op te maken.

De CAST() Functie

De meest voor de hand liggende manier om dit te doen, is door het getal om te zetten in een decimaal type. Twee functies die dit voor ons kunnen doen is CAST() en CONVERT() .

Hier is een voorbeeld van het gebruik van CAST() :

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

Resultaat:

275.00

We kunnen deze methode zelfs gebruiken als het getal al een decimale waarde is, maar met meer decimalen.

Een ding om te onthouden is dat als je het aantal decimalen reduceert van een getal met meer dan twee decimalen, je zou kunnen eindigen met de tweede decimaal naar boven afgerond:

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

Resultaat:

275.46

De CONVERT() Functie

Hier gebruiken we CONVERT() om hetzelfde te doen – converteer het getal naar decimaal:

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

Resultaat:

275.00

De FORMAT() Functie

Een andere manier om een ​​getal met twee decimalen op te maken, is door de FORMAT() . te gebruiken functie:

SELECT FORMAT(275, 'N2');

Resultaat:

275.00

Deze functie converteert het getal feitelijk naar een tekenreeks, dus technisch gezien is het resultaat geen numeriek type.

De N2 deel wordt een formatstring genoemd. In dit geval N is voor nummer en 2 is voor het aantal decimalen (u kunt dit naar wens verhogen of verlagen).

Dezelfde techniek kan worden gebruikt om het aantal decimalen terug te brengen tot twee, van een getal met meer decimalen:

SELECT FORMAT(275.4567, 'N2');

Resultaat:

275.46

Het is naar boven afgerond, net zoals toen we het getal in het andere voorbeeld omrekenden.

Een andere manier om dit te doen, is door een aangepaste opmaakreeks te gebruiken. Met tekenreeksen voor aangepaste indelingen kunt u een indeling opgeven die mogelijk niet wordt ondersteund door een tekenreeks met standaardindeling.

Hier is een voorbeeld van het gebruik van tekenreeksen voor aangepaste opmaak:

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

Resultaat:

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

We kunnen zien dat er een verschil is tussen het gebruik van # en 0 in de opmaakreeks. De # formaatspecificatie onderdrukt alle onbeduidende nullen terwijl de 0 formaatspecificatie niet.

Maar misschien nog belangrijker (voor de doeleinden van dit artikel), de 0 formaatspecificatie stelt u in staat om onbeduidende nullen toe te voegen als ze niet aanwezig zijn in het oorspronkelijke getal. Daarom kan het worden gebruikt om twee decimalen toe te voegen aan een geheel getal (zoals te zien is in het bovenstaande voorbeeld).

De STR() Functie

Een andere manier om een ​​getal tot op twee decimalen op te maken, is door de STR() . te gebruiken functie:

SELECT STR(275, 6, 2);

Resultaat:

275.00

Deze functie retourneert tekengegevens die zijn geconverteerd uit numerieke gegevens. De karaktergegevens zijn rechts uitgelijnd, met een gespecificeerde lengte en decimale precisie.

Het eerste argument is een uitdrukking van het gegevenstype float met een decimaalteken.

Het tweede argument is de totale lengte. Dit omvat decimale punt, teken, cijfers en spaties. De standaardwaarde is 10.

Het derde argument is het aantal plaatsen rechts van de komma. Dit moet kleiner dan of gelijk zijn aan 16.


  1. PostgreSQL samengestelde primaire sleutel

  2. Hoe installeer ik SQL Server op een Mac met VirtualBox

  3. Doe mee voor een Microsoft Access met SQL Server Academy-sessie

  4. Hoe wordt met behulp van Oracle SQL het dagnummer van de week en de dag van de week weergegeven?