money我很好奇数据类型和类似的东西之间是否存在真正的区别decimal(19,4)(我相信这是钱在内部使用的东西)。
money
decimal(19,4)
我知道这money是特定于 SQL Server 的。我想知道是否有令人信服的理由选择其中一个;大多数 SQL Server 示例(例如 AdventureWorks 数据库)使用money而不是decimal用于价格信息等内容。
decimal
我应该继续使用 money 数据类型,还是改用小数有好处?金钱是更少的字符输入,但这不是一个正当的理由:)
你永远不应该用钱。不精确,纯属垃圾;始终使用十进制/数字。
运行这个看看我的意思:
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
输出:2949.0000 2949.8525
对于一些说你不要用钱来分钱的人:
这是我计算相关性的查询之一,将其更改为金钱会产生错误的结果。
select t1.index_id,t2.index_id,(avg(t1.monret*t2.monret) -(avg(t1.monret) * avg(t2.monret))) /((sqrt(avg(square(t1.monret)) - square(avg(t1.monret)))) *(sqrt(avg(square(t2.monret)) - square(avg(t2.monret))))), current_timestamp,@MaxDate from Table1 t1 join Table1 t2 on t1.Date = traDate group by t1.index_id,t2.index_id