我试着做一些公式计算,如下所示
( CASE
WHEN X <= 0.04 THEN X
WHEN X > 0.04 AND X <= 0.05 THEN TO_CHAR(X-0.010, '9,999,999.99')
WHEN X > 0.05 AND X <= 0.07 THEN TO_CHAR(X-0.020, '9,999,999.99')
WHEN X > 0.07 AND X <= 0.120 THEN TO_CHAR(X-0.030, '9,999,999.99')
WHEN X > 0.12 AND X <= 0.150 THEN TO_CHAR(X-0.040, '9,999,999.99')
ELSE TO_CHAR(X -0.05, '9,999,999.99')
END
)
使用值
0.45
-0.01
当我使用上面的查询时,我将通过公式
后得到以下结果.35
-0.01
它将0.35更改为char并且缺少前导零。 有没有办法可以保留0?如果我不改变角色,我会期望char得到数字。
答案 0 :(得分:0)
在第二行中,返回数字数据类型
WHEN X <= 0.04 THEN X
而在其他行上返回char数据类型
WHEN X > 0.04 AND X <= 0.05 THEN TO_CHAR(X-0.010, '9,999,999.99')
每次都必须使用相同的数据类型。因此,如果您将第二行更改为
WHEN X <= 0.04 THEN to_char(X, '9,999,999.99')
它应该有用。
如果你想要一个前导零,你可以使用这个格式字符串:
to_char(X, '9,999,990.99')
A 9表示省略尾随零,而0表示返回前导零。见http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements004.htm#SQLRF00210