我应该使用什么mysql类型来存储变量精度的十进制(可能每个记录更改)

时间:2011-11-04 16:42:39

标签: mysql sqldatatypes

  1. 如果我将Decimal存储为1.200,我希望查询将值检索为1.200,但如果我将值存储为1.450005,我希望查询返回1.450005。
  2. 我需要能够将该字段作为数字类型进行比较。
  3. 乍一看,十进制(10,6)似乎很适合我对字段表示价格的要求,但我真正想要的是一个可以存储最多的字段小数点右边的6位数字,不一定每次都是6位数

    如果满足此要求,我在字段中有效地编码了精度信息,这对于将数据检索到C ++ Decimal对象的实例非常有用,该对象要求1.20(精度2)与1.2000不同(精度4),即使它们具有相同的价值/价值。在我的对象中保留精度信息对于进一步的算术运算至关重要。

    我想,另一种方法是将值存储为Mysql中的varchar(),它将保留数字,但在Mysql中丢失算术运算符功能。

    第三个丑陋的替代方法是使用Decimal(10,6),然后使用一个额外的字段来存储我正在使用的精度,这样我就可以正确地转换为我的C ++实例。如果没有更好的解决方案,我可能不得不采用这种丑陋的方法。

    任何人都对我如何处理这些要求提出了很好的建议?

1 个答案:

答案 0 :(得分:0)

Per Crontab和Jim Garrison的评论,这个问题的最佳解决方案是:

  1. 使用DECIMAL(10,6)存储号码本身,
  2. 使用一个额外字段,该字段将存储适用于特定记录的精度