gpt4 book ai didi

sql-server - 在 SQL Server 中应该选择 MONEY 还是 DECIMAL(x,y) 数据类型?

转载 作者:行者123 更新时间:2023-12-01 16:16:19 25 4
gpt4 key购买 nike

我很好奇 money 数据类型和 decimal(19,4) 之类的数据类型(这是金钱的用途)之间是否存在真正的区别我相信在内部)。

我知道money 是特定于SQL Server 的。我想知道是否有令人信服的理由选择其中之一;大多数 SQL Server 示例(例如 AdventureWorks 数据库)使用 money 而不是 decimal 来表示价格信息等内容。

我应该继续使用资金数据类型,还是使用十进制有好处?金钱是要输入的字符更少,但这不是一个有效的理由:)

最佳答案

永远不要使用金钱。不精确,纯属垃圾;始终使用小数/数字。

运行这个看看我的意思:

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

关于sql-server - 在 SQL Server 中应该选择 MONEY 还是 DECIMAL(x,y) 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com