money 和 smallmoney (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

备注

数据类型 范围 存储
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 个字节
smallmoney -214,748.3648 到 214,748.3647 4 个字节

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

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

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

符号 货币 十六进制值
$ 美元符号 0024
¢ Cent 符号 00A2
英镑 井号 00A3
¤ 货币符号 00A4
¥ 日元符号 00A5
孟加拉卢比标记 09F2
孟加拉卢比标志 09F3
฿ 泰国泰铢货币符号 0E3F
高棉 Riel 货币符号 17DB
欧元货币符号 20A0
冒号 20A1
克鲁塞罗标志 20A2
法国法郎符号 20A3
里拉符号 20A4
磨坊标志 20A5
文格符号 20A6
Peseta 符号 20A7
Rs 卢比符号 20A8
“已赢”号 20A9
新建谢克尔符号 20AA
董符号 20AB
欧元标志 20AC
Kip 符号 20AD
图格里克符号 20AE
Drachma 符号 20AF
德语佩妮标志 20B0
比索符号 20B1
里亚尔符号 FDFC
小美元符号 FE69
全角美元符号 FF04
全角 Cent 符号 FFE0
英镑 全角井号 FFE1
¥ 全角日元符号 FFE5
全角赢号 FFE6

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

警告

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

转换货币数据

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