Pieniądze i drobne pieniądze (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database w usłudze Microsoft Fabric

Typy danych reprezentujące wartości pieniężne lub walutowe.

Remarks

Typ danych Range Magazyn
money -922,337,203,685,477,5808 do 922,337,203,685,477.5807 (-922,337,203,685,477,588
do 922,337,203,685,477,58 dla Informatica. Informatica obsługuje tylko dwie liczby dziesiętne, a nie cztery.
8 bajtów
smallmoney -214,748.3648 do 214,748.3647 4 bajty

Typy danych i małych są dokładne w dziesiątej tysięcy jednostek pieniężnych, które reprezentują. Dla Informatica i małych typy danych są dokładne dla jednej setnej jednostek pieniężnych, które reprezentują.

Użyj okresu, aby oddzielić częściowe jednostki pieniężne, takie jak centy, od całych jednostek pieniężnych. Na przykład 2.15 określa 2 dolary i 15 centów.

Te typy danych mogą używać dowolnego z następujących symboli waluty.

Symbol Currency Wartość szesnastkowa
$ Znak dolara 0024
¢ Znak centowy 00A2
£ Znak funta 00A3
¤ Znak walutowy 00A4
¥ Znak Yen 00A5
৲ Rupia bengalska 09F2
৳ Znak rupii bengalskiej 09F3
฿ Tajlandzki symbol waluty 0E3F
៛ Symbol waluty Khmer Riel 17DB
₠ Znak waluty euro 20A0
₡ Znak okrężnika 20A1
₢ Znak Cruzeiro 20A2
₣ Francuski znak franka 20A3
₤ Znak Lira 20A4
₥ Znak młyna 20A5
₦ Znak Naira 20A6
₧ Znak peseta 20A7
₨ Znak rupii 20A8
₩ Znak zwycięstwa 20A9
₪ Nowy znak Sheqel 20AA
₫ Znak Dong 20AB
€ Znak euro 20AC
₭ Znak kip 20AD
₮ Znak Tugrik 20AE
₯ Znak drachmy 20AF
₰ Niemiecki znak Penny 20B0
₱ Znak peso 20B1
﷼ Znak rialu FDFC
﹩ Mały znak dolara FE69
$ Znak dolara o pełnej szerokości FF04
¢ Znak centowy o pełnej szerokości FFE0
£ Znak funta o pełnej szerokości FFE1
¥ Znak jena o pełnej szerokości FFE5
₩ Znak o pełnej szerokości Won FFE6

Nie musisz ująć waluty ani danych pieniężnych w pojedynczy cudzysłów ('). Chociaż można określić wartości pieniężne poprzedzone symbolem waluty, program SQL Server nie przechowuje żadnych informacji o walucie skojarzonych z symbolem, ale przechowuje tylko wartość liczbową.

Warning

Błędy zaokrąglania można napotkać za pomocą obcinania, podczas przechowywania wartości pieniężnych i małych. Unikaj używania tego typu danych, jeśli w obliczeniach są używane wartości pieniężne lub walutowe. Zamiast tego użyj typu danych dziesiętnego z co najmniej czterema miejscami dziesiętnymi.

Konwertowanie danych pieniężnych

W przypadku konwersji na pieniądze z typów danych całkowitych przyjmuje się, że jednostki są w jednostkach pieniężnych. Na przykład wartość całkowita 4 jest konwertowana na pieniężne odpowiednik 4 jednostek pieniężnych.

Poniższy przykład konwertuje małe i wartości pieniędzy na varchar i typy danych dziesiętnych.

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';

Oto zestaw wyników. Ponieważ typ dziesiętny w przykładzie nie ma skalowania, wartość jest obcięta.

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