money 和 smallmoney (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 数据库

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

Remarks

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

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

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

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

Symbol Currency 十六进制值
$ 美元符号 0024
¢ 分号 00A2
£ 磅号 00A3
¤ 货币符号 00A4
¥ 日元符号 00A5
৲ 孟加拉卢比标记 09F2
৳ 孟加拉卢比标志 09F3
฿ 泰国泰铢货币符号 0E3F
៛ 高棉 Riel 货币符号 17DB
₠ 欧元货币符号 20A0
₡ 结肠标志 20A1
₢ 克鲁塞罗标志 20A2
₣ 法国法郎符号 20A3
₤ 里拉星座 20A4
₥ 磨坊标志 20A5
₦ 奈拉符号 20A6
₧ 比塞塔标志 20A7
₨ 卢比符号 20A8
₩ Won标志 20A9
₪ 新建谢克尔符号 20AA
₫ 同手势 20AB
€ 欧洲标志 20AC
₭ Kip标志 20AD
₮ 图格里克符号 20AE
₯ 德拉克玛标志 20AF
₰ 德语佩妮标志 20B0
₱ 比索符号 20B1
﷼ 里亚尔星座 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