【问题标题】:When to use Money data or Decimal Data type in sql server to store costing values? [duplicate]sql server 中何时使用 Money 数据或 Decimal 数据类型来存储成本值? [复制]
【发布时间】:2014-04-16 02:17:31
【问题描述】:

存储成本计算值的首选数据类型是什么?金钱或小数 什么是程序化差异赌注? 用于货币数据类型的 asp.net 模型的 asp.net 数据注释?

【问题讨论】:

    标签: sql sql-server decimal sqldatatypes currency


    【解决方案1】:

    您应该更喜欢decimal,因为money 数据类型不精确。

    您也可以查看 Aaron Bertrand 的 Performance / Storage Comparisons : MONEY vs. DECIMAL

    【讨论】:

    • “不精确”?请。它具有 4 个完整的小数位精度。说不精确是完全武断的,没有参考点,而且,呃,不精确。对于那些不需要在小数点后存储超过 4 位数字的用户,money 可以完全满足他们的需要。
    【解决方案2】:

    Decimal 类型提供更高的精度来保存中间结果以获得您期望的结果。

    money 数据类型的缺点:

    1. 它是专有的,所以移植它很痛苦。它是几十年前的众多“Sybase 代码博物馆”功能之一。还记得 UNIX 的早期版本吗?

    2. 当你不需要让说方言的人听起来像乡巴佬时,用方言编写代码。你最好使用 DECIMAL(s,p),这样你就可以使用适当大小的列。

    3. 它确实在后端显示和格式化,带有逗号和美元符号。这违背了分层架构的目的。

    4. MONEY 数据类型存在舍入错误。

    参考:msdn

    【讨论】:

    • 如果使用错误,即如果有人将money 乘以或除以money,它只会出现“舍入错误”,这当然是荒谬的。如果money 乘以/除以适当的类型,导致表达式提升为任意精度,则根本没有问题。
    猜你喜欢
    • 2019-10-09
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多