money 和 smallmoney (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
代表金融或貨幣值的資料類型。
備註
資料類型 | 範圍 | 儲存體 |
---|---|---|
money | -922,337,203,685,477.5808 到 922,337,203,685,477.5807 (-922,337,203,685,477.58 到 922,337,203,685,477.58 (Informatica)。 Informatica 只支援兩個十進位數,而非四個。) |
8 個位元組 |
smallmoney | -214,748.3648 到 214,748.3647 | 4 個位元組 |
money 和 smallmoney 資料類型的精確度可達它們所代表之金融單位的萬分之一。 針對 Informatica,money 和 smallmoney 資料類型的精確度可達它們所代表之金融單位的百分之一。
句點可用來分隔局部的貨幣單位 (如分,Cent) 與完整的貨幣單位。 例如, 2.15
指定 2 美元和 15 美分。
這些資料類型可以使用以下任一種貨幣符號。
符號 | 貨幣 | 十六進位值 |
---|---|---|
$ | 貨幣符號 | 0024 |
¢ | Cent 符號 | 00A2 |
£ | 磅號 | 00A3 |
¤ | 貨幣符號 | 00A4 |
¥ | 日元符號 | 00A5 |
৲ | 孟加拉盧比標記 | 09F2 |
৳ | 孟加拉盧比標誌 | 09F3 |
฿ | 泰國泰銖貨幣符號 | 0E3F |
៛ | 高棉瑞爾貨幣符號 | 17DB |
₠ | 歐元貨幣符號 | 20A0 |
₡ | 冒號 | 20A1 |
₢ | 克魯塞羅標誌 | 20A2 |
₣ | 法國法郎符號 | 20A3 |
₤ | 里拉符號 | 20A4 |
₥ | 磨坊標誌 | 20A5 |
₦ | 文格符號 | 20A6 |
₧ | Peseta 符號 | 20A7 |
Rs | 盧比符號 | 20A8 |
₩ | 已贏號 | 20A9 |
₪ | 新謝克爾符號 | 20AA |
₫ | 董符號 | 20AB |
€ | 歐元標誌 | 20AC |
₭ | Kip 符號 | 20AD |
₮ | 圖格裡克符號 | 20AE |
₯ | Drachma 符號 | 20AF |
₰ | 德文佩尼標誌 | 20B0 |
₱ | 比索符號 | 20B1 |
﷼ | 里亞爾符號 | FDFC |
﹩ | Small Dollar 符號 | FE69 |
$ | 全角貨幣符號 | FF04 |
¢ | 全角 Cent 符號 | FFE0 |
£ | 全角磅符號 | FFE1 |
¥ | 全角日元符號 | FFE5 |
₩ | 全角獲勝符號 | FFE6 |
您不需要以單引號 ('
) 括住貨幣或貨幣數據。 雖然您可以指定貨幣符號前面的貨幣值,但 SQL Server 不會儲存與符號相關聯的任何貨幣資訊,但只會儲存數值。
警告
當將貨幣值儲存為 money 和 smallmoney 時,您可以透過截斷來體驗四捨五入錯誤。 如果您的貨幣或貨幣值用於計算中,請避免使用此數據類型。 請改用 具有至少四個小數位數的小數位數的十進位 數據類型。
轉換貨幣數據
當您從任何整數資料類型轉換成 money 時,會假設單位是貨幣單位。 例如,的 4
整數值會 轉換成相當於 4 個貨幣單位的貨幣 。
下列範例會分別將 smallmoney 和 money 值轉換成 varchar 和 decimal 資料類型。
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';
結果集如下所示。 因為範例中的十進位類型沒有小數字數,因此會截斷值。
SM_MONEY VARCHAR(20) MONEY DECIMAL
------------------------------ ----------------------
3148.29 3148