pengar och smallmoney (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Datatyper som representerar monetära värden eller valutavärden.

Remarks

Datatyp Range Storage
money -922 337 203 685 477,5808 till 922 337 203 685 477 5807 (-922 337 203 685 477,58
till 922 337 203 685 477,58 för Informatica. Informatica stöder bara två decimaler, inte fyra.)
8 byte
smallmoney -214 748,3648 till 214 748,3647 4 byte

De pengarna och småpengar datatyperna är korrekta för en tiotusendel av de monetära enheter som de representerar. För Informatica är pengar och småpengar datatyper korrekta till en hundradel av de monetära enheter som de representerar.

Använd en period för att separera partiella monetära enheter, till exempel cent, från hela monetära enheter. Till exempel anger 2.15 2 dollar och 15 cent.

Dessa datatyper kan använda någon av följande valutasymboler.

Symbol Currency Hexadecimalt värde
$ Dollartecken 0024
¢ Cent-tecken 00A2
£ Hundtecken 00A3
¤ Valutatecken 00A4
¥ Yen-tecknet 00A5
Bengali Rupee markerar 09F2
Bengali Rupee tecken 09F3
฿ Thai Baht valutasymbol 0E3F
Khmer Riel valutasymbol 17DB
Euro valutatecken 20A0
Kolontecken 20A1
Cruzeiro-tecken 20A2
Franska Franc-skylt 20A3
Liratecken 20A4
Kvarnskylt 20A5
Naira-tecken 20A6
Peseta-skylt 20A7
Rupietecken 20A8
Won-tecken 20A9
Ny Sheqel-skylt 20AA
Dong-tecken 20AB
Eurotecken 20AC
Kip-skylt 20AD
Tugrik-tecken 20AE
Drachmatecken 20AF
Tyska Penny-skylt 20B0
Pesotecken 20B1
Rial-tecknet FDFC
Små dollartecken FE69
Dollartecken med full bredd FF04
Cent-tecken med full bredd FFE0
Fullbreddstecken för pund FFE1
Yen-tecken med full bredd FFE5
Tecknet Vann med full bredd FFE6

Du behöver inte omsluta valuta- eller penningdata inom enkla citattecken ('). Du kan ange monetära värden som föregås av en valutasymbol, men SQL Server lagrar inte någon valutainformation som är associerad med symbolen, men den lagrar bara det numeriska värdet.

Warning

Du kan uppleva avrundningsfel via trunkering när du lagrar monetära värden som pengar och smallmoney. Undvik att använda den här datatypen om dina pengar eller valutavärden används i beräkningar. Använd i stället decimal datatyp med minst fyra decimaler.

Konvertera pengadata

När du konverterar till pengar från heltalsdatatyper antas enheterna finnas i monetära enheter. Till exempel konverteras heltalsvärdet för 4 till pengar motsvarande 4 monetära enheter.

I följande exempel konverteras och pengar värden till varchar respektive decimaler datatyper.

DECLARE @mymoney_sm SMALLMONEY = 3148.29,
    @mymoney MONEY = 3148.29;

SELECT CAST(@mymoney_sm AS VARCHAR(20)) AS 'SM_MONEY VARCHAR(20)',
    CAST(@mymoney AS DECIMAL) AS 'MONEY DECIMAL';

Här är resultatuppsättningen. Eftersom det decimaltecknet i exemplet inte har någon skalatrunkeras värdet.

SM_MONEY VARCHAR(20)           MONEY DECIMAL
------------------------------ ----------------------
3148.29                        3148