动态 格式化数值的精度(小数点位数)问题
问题描述:
数据库中对数据采取放大成整数的方式进行存储,比如一个数据,其值为 1.23, 则将它存到数据库中精度 preci 为 2,value 为 123(=1.23 * 10^2),即 value 是经过 放大 10 的精度(preci)次方倍 之后存储的,已达到数据库只存整数。这样的 value 有很多,精度没有规律,但保证存储到数据中是正确的放大之后的值和它对应的精度。
目前,获得了数据(value)和这个数据对应的精度(preci),对数据格式化的这个过程我也希望在oracle 中完成。有没有什么好的方法在 oracle 中将这个 value 还原到它本来状态(值和精度都要一致)。
我目前的做法很傻,用到了 DECODE,
即 decode(value, 1, to_char(value / power(10, 1), 'FM999999990.0'), 2, to_char(value / power(10, 2), 'FM999999990.00'), ..., value) ,... 为可能的其他精度。
对 oracle 数据库不熟悉,不会使用,不知道有没有更简便的方法,不使用这么多的check。而且不知道 decode 对性能有没有什么影响。我前面生成 value 和 preci 也用到了 decode。
请各位指导,谢谢!!!