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 Express DB 处于“恢复中”-如何检测/知道何时恢复