如何用特定值oracle替换十进制值?

时间:2017-01-10 08:21:14

标签: sql oracle

例如我有这些值:

9.0001
8.1556
1.0000
9.7345
2.0003

我希望我的结果是 -

9.5
8.5
1.0
9.5
2.5

因此范围内的任何十进制值(介于0.0001 - 0.9999之间)应更改为.5

3 个答案:

答案 0 :(得分:1)

您只需使用floor()ceil()功能即可完成此操作:

select floor(col) + (ceil(col) - floor(col)) / 2
from your_table

要了解此公式的工作原理,请考虑值9.0001

floor(9.0001) + (ceil(9.0001) - floor(9.0001)) / 2
9 + (10 - 9) / 2
9 + 1/2
9.5

这是你所期望的。另请注意,对于1.0000,该值将保持1.0000,因为在这种情况下,上限等于发言权。

答案 1 :(得分:0)

假设值始终为正值,您可以使用:

to_char(case trunc(x) = x then x else trunc(x) + 0.5 end, '99990D0')

如果没有,请添加另一个案例,根据符号进行减法或加法。

答案 2 :(得分:0)

我认为你应该尝试

SELECT ROUND(15.193,1) ...