money 和 smallmoney (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 数据库 是Azure SQL 托管实例 是Azure Synapse Analytics 是并行数据仓库

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

备注

数据类型 范围 存储
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 美分。

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

货币符号表,十六进制值

货币数据不需要用单引号 (') 引起来。 请务必记住虽然您可以指定前面带有货币符号的货币值,但 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)