Hier zijn drie opties voor het converteren van een geheel getal naar een decimale waarde in SQL Server met behulp van T-SQL.
De CAST()
Functie
De CAST()
functie converteert een uitdrukking van het ene gegevenstype naar het andere:
SELECT CAST(275 AS DECIMAL(5, 2));
Resultaat:
275.00
In dit voorbeeld hebben we een geheel getal geconverteerd (275
) naar een decimale waarde met een precisie van 5
en met 2
decimalen.
Decimaal en numeriek zijn synoniemen en kunnen door elkaar worden gebruikt. Daarom kunnen we ons voorbeeld als volgt aanpassen om hetzelfde resultaat te bereiken:
SELECT CAST(275 AS NUMERIC(5, 2));
Resultaat:
275.00
Het is belangrijk om te onthouden dat u de precisie indien nodig aanpast:
SELECT CAST(18301275 AS DECIMAL(10, 2));
Resultaat:
18301275.00
Als het precisieargument niet groot genoeg is, treedt er een fout op:
SELECT CAST(18301275 AS DECIMAL(9, 2));
Resultaat:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
De CONVERT()
Functie
De CONVERT()
functie doet hetzelfde als CAST()
, behalve met een iets andere syntaxis:
SELECT CONVERT(DECIMAL(5, 2), 275);
Resultaat:
275.00
Gebruik een rekenkundige operator
Een andere optie is om een rekenkundige operator te gebruiken, zoals een vermenigvuldigingsoperator:
SELECT 275 * 1.00;
Resultaat:
275.00
In dit voorbeeld vermenigvuldigen we het gehele getal met 1.00
.
Wanneer in SQL Server een operator expressies van verschillende gegevenstypen combineert, wordt het gegevenstype met de lagere prioriteit eerst geconverteerd naar het gegevenstype met de hogere prioriteit. De bewerking retourneert vervolgens het gegevenstype van het argument met de hogere prioriteit.
In SQL Server heeft decimaal een hogere prioriteit dan geheel getal.
Door het met 1,00 te vermenigvuldigen, veranderen we het gehele gedeelte niet. We converteren het eenvoudig naar decimaal en voegen het fractionele deel toe.
Zie Voorrang van gegevenstype in SQL Server voor een lijst met gegevenstypen in volgorde van prioriteit.