34,590
社区成员
发帖
与我相关
我的任务
分享
--要证明,一个个测试:
DECLARE @Money1 money
SET @Money1 = 123456789012345--decimal(17,2)
SELECT @Money1
DECLARE @Money2 money
SET @Money2 = 1234567890123456 --error(整数最长15位)
SELECT @Money2
DECLARE @Money3 money
SET @Money3 = 123456789012345.1234--decimal(19,4)
SELECT @Money3
DECLARE @Money4 money
SET @Money4 = 123456789012345.12345 --decimal(19,4)
SELECT @Money4
DECLARE @Money5 money
SET @Money5 = 0.12345 --decimal(?,4) (小数最长4位)
SELECT @Money5
DECLARE @Money money
SET @Money = 1235.45679
SELECT @Money
,SQL_VARIANT_PROPERTY(@Money,'BaseType') AS BaseType
,SQL_VARIANT_PROPERTY(convert(sql_variant,@Money),'BaseType') AS BaseType
,SQL_VARIANT_PROPERTY(convert(sql_variant,@Money),'Precision') AS Precision
,SQL_VARIANT_PROPERTY(convert(sql_variant,@Money),'Scale') AS Scale
DECLARE
@mon1 MONEY,
@mon2 MONEY,
@mon3 MONEY,
@mon4 MONEY,
@num1 DECIMAL(19,4),
@num2 DECIMAL(19,4),
@num3 DECIMAL(19,4),
@num4 DECIMAL(19,4)
SELECT
@mon1 = 100, @mon2 = 339, @mon3 = 10000,
@num1 = 100, @num2 = 339, @num3 = 10000
SET @mon4 = @mon1/@mon2*@mon3
SET @num4 = @num1/@num2*@num3
SELECT @mon4 AS moneyresult,@num4 AS numericresult
moneyresult numeric result
2949.00 2949.8525
PRINT @@version;
/*
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
受影响的行: 0
时间: 0.018s
*/
PRINT CAST(123456789012345.12345 AS money);
/*
123456789012345.12
受影响的行: 0
时间: 0.007s
*/
PRINT CAST(1234567890123456.12345 AS money)
/*
[Err] 22003 - [SQL Server]将 numeric 转换为数据类型 money 时出现算术溢出错误。
*/
PRINT @@version;
/*
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
受影响的行: 0
时间: 0.018s
*/
PRINT CAST(123456789012345.12345 AS money);
/*
123456789012345.12
受影响的行: 0
时间: 0.007s
*/
PRINT CAST(1234567890123456.12345 AS money)
/*
[Err] 22003 - [SQL Server]将 numeric 转换为数据类型 money 时出现算术溢出错误。
*/