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 美分。

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

Table of currency symbols, hexadecimal values

货币数据不需要用单引号 (') 引起来。 请务必记住虽然您可以指定前面带有货币符号的货币值,但 SQL Server 不存储任何与符号关联的货币信息,它只存储数值。

转换 money 数据

如果将整型数据类型转换为 money,则假设采用货币单位。 例如,整数值 4 被转换为相当于 4 个货币单位的 money 值。

下面的示例分别将 smallmoney 和 money 值转换为 varchar 和 decimal 数据类型

DECLARE @mymoney_sm SMALLMONEY = 3148.29,  
        @mymoney    MONEY = 3148.29;  
SELECT  CAST(@mymoney_sm AS VARCHAR) AS 'SM_MONEY varchar',  
        CAST(@mymoney AS DECIMAL)    AS 'MONEY DECIMAL';  

下面是结果集。

SM_MONEY VARCHAR               MONEY DECIMAL  
------------------------------ ----------------------  
3148.29                        3148    
(1 row(s) affected)  

另请参阅

ALTER TABLE (Transact-SQL)CAST 和 CONVERT (Transact-SQL)CREATE TABLE (Transact-SQL)数据类型 (Transact-SQL)DECLARE @local_variable (Transact-SQL)SET @local_variable (Transact-SQL)sys.types (Transact-SQL)