sql >> Database >  >> RDS >> Sqlserver

3 manieren om een ​​geheel getal naar decimaal te converteren in SQL Server

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.


  1. Op diepte gebaseerde boom genereren uit hiërarchische gegevens in MySQL (geen CTE's)

  2. Voer regex (vervangen) uit in een SQL-query

  3. Hoe om te gaan met meerdere objecten met behulp van Object Explorer Detail Windows in SSMS - SQL Server / TSQL-zelfstudie, deel 22

  4. Een beperking waardoor slechts één van de twee tabellen kan verwijzen naar een basistabel