money 和 smallmoney (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 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