money 和 smallmoney (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 预览版中的 SQL 数据库

代表货币或货币值的数据类型。

Remarks

Data type Range 存储
money -922,337,203,685,477.5808 到 922,337,203,685,477.5807(对于 Informatica,为 -922,337,203,685,477.58
到 922,337,203,685,477.58。 Informatica 仅支持两位小数,而不是四位。)
8 bytes
smallmoney -214,748.3648 到 214,748.3647 4 bytes

money 和 smallmoney 数据类型精确到它们所代表的货币单位的万分之一。 对于 Informatica,money 和 smallmoney 数据类型精确到它们所代表的货币单位的百分之一

用句点分隔局部货币单位(如美分)和总体货币单位。 例如, 2.15 指定 2 美元和 15 美分。

这些数据类型可以使用下列任意一种货币符号。

Symbol Currency Hexadecimal value
$ Dollar sign 0024
¢ Cent sign 00A2
£ Pound sign 00A3
¤ Currency sign 00A4
¥ Yen sign 00A5
孟加拉卢比标记 09F2
孟加拉卢比标志 09F3
฿ 泰国泰铢货币符号 0E3F
高棉 Riel 货币符号 17DB
欧元货币符号 20A0
Colon sign 20A1
Cruzeiro sign 20A2
法国法郎符号 20A3
Lira sign 20A4
Mill sign 20A5
Naira sign 20A6
Peseta sign 20A7
Rupee sign 20A8
Won sign 20A9
新建谢克尔符号 20AA
Dong sign 20AB
Euro sign 20AC
Kip sign 20AD
Tugrik sign 20AE
Drachma sign 20AF
德语佩妮标志 20B0
Peso sign 20B1
Rial sign FDFC
小美元符号 FE69
全角美元符号 FF04
全角 Cent 符号 FFE0
全角井号 FFE1
全角日元符号 FFE5
全角赢号 FFE6

无需将货币或货币数据括在单引号中(')。 虽然可以指定货币符号之前的货币值,但 SQL Server 不存储与符号关联的任何货币信息,但它只存储数值。

Warning

将货币值存储为 货币小型货币时,可以通过截断来体验舍入错误。 如果在计算中使用货币或货币值,请避免使用此数据类型。 请改用具有至少四个小数位数的 十进制 数据类型。

转换货币数据

如果将整型数据类型转换为 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