根据列值设置小数位

时间:2016-08-24 15:05:21

标签: sql oracle formatting

我从表中查询两个值。我想使用第二个值来设置第一个值的小数位。有谁知道如何使用to_char设置此项?我正在查看这些格式,而且我不确定如何使我接收到我需要的格式。这是我的代码:

with tmp as (select num, scale
        from tl)
select fun, num
from fun_table f, tmp
where f.fun = tmp.scale;

编辑: 如果我收到num为5.87并且缩放为3我希望结果为5.870

num:7.00比例:1预期输出:7.0

num:7 scale:4预期输出:7.0000

2 个答案:

答案 0 :(得分:1)

这样的东西?

SELECT TO_CHAR(num, CONCAT('99D',RPAD('9',scale,'9'))) FROM tl

或者,如果scale可以为0,并且您不想在这种情况下显示小数点分隔符,

SELECT TO_CHAR(num, CONCAT('99',RPAD('D',scale+1,'9'))) FROM tl

在Oracle Database 11g上测试。

答案 1 :(得分:0)

select round(fun,scale) from fun_table f, tmp where f.fun = tmp.scale;

也许这就是你要找的东西?根据您想要的逻辑,您可能希望将圆形功能替换为地板或电池。