sql server 中何时使用 Money 数据或 Decimal 数据类型来存储成本值? [复制]

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

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

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

money 数据类型的缺点:

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

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

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

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

参考:msdn

【讨论】:

如果使用错误,即如果有人将money 乘以或除以money,它只会出现“舍入错误”,这当然是荒谬的。如果money 乘以/除以适当的类型,导致表达式提升为任意精度,则根本没有问题。

以上是关于sql server 中何时使用 Money 数据或 Decimal 数据类型来存储成本值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sql server 条件

sql server 货币 字段 类型 一般用啥类型?

SQL Server Express DB 处于“恢复中”-如何检测/知道何时恢复

我应该何时打开和关闭与 SQL Server 的连接

SQL Server 里需要定时执行某个存储过程,存储过程怎么写?

常用 SQL Server 规范集锦