使用货币数据

Microsoft SQL Server 2005 使用以下两种数据类型存储货币数据或货币值:moneysmallmoney。这些数据类型可以使用下列任意一种货币符号。

货币符号表,十六进制值

货币数据不需要用单引号 (') 引起来。请务必记住虽然您可以指定前面带有货币符号的货币值,但 SQL Server 不存储任何与符号关联的货币信息,它只存储数值。例如,若要将值 100 美元指定给变量,可以执行下列操作:

DECLARE @dollars AS money
SET @dollars = $100
SELECT @dollars

返回的值为 100.0000,且不带货币符号。

如果一个对象被定义为 money,则它最多可以包含 19 位数字,其中小数点后可以有 4 位数字。该对象使用 8 个字节存储数据。因此,money 数据类型的精度是 19,小数位数是 4,长度是 8。

moneysmallmoney 限制为小数点后有 4 位。如果需要小数点后有更多位,请使用 decimal 数据类型。

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

虽然这些数据类型的显示格式中包括逗号分隔符,但是 moneysmallmoney 常量中不允许使用逗号分隔符。只能在显式转换为 moneysmallmoney 的字符串中指定逗号分隔符。例如:

USE tempdb;
GO
CREATE TABLE TestMoney (cola INT PRIMARY KEY, colb MONEY);
GO
SET NOCOUNT ON;
GO

-- The following three INSERT statements work.
INSERT INTO TestMoney VALUES (1, $123.45);
GO
INSERT INTO TestMoney VALUES (2, $123123.45);
GO
INSERT INTO TestMoney VALUES (3, CAST('$444,123.45' AS MONEY) );
GO

-- This INSERT statement gets an error because of the comma
-- separator in the money string.
INSERT INTO TestMoney VALUES (3, $555,123.45);
GO
SET NOCOUNT OFF;
GO
SELECT * FROM TestMoney;
GO 

请参阅

其他资源

数据类型 (Transact-SQL)
money 和 smallmoney (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助