1

是否有任何简单而干净的解决方案可以为不同的数字设置两种不同的格式。
例如,0.00 应为 0,所有其他数字应为 x.xxx。

到目前为止我的解决方案:

select decode(to_char(0.000, '90D999'),'0.000', 0, (to_char (0.000, '99990D99999'))) from dual

我不高兴,因为我认为有一个更简单的解决方案。

4

2 回答 2

0

您也可以使用 CASE-WHEN...

SELECT (CASE WHEN MY_VALUE=0 THEN '0' ELSE to_char(MY_VALUE, '90D999') END) 
FROM DUAL

我认为这更具可读性 - 但这是主观的......

于 2012-10-31T11:35:20.753 回答
0

您可以使用 simple-case-expression 使其更简洁:

select case my_value when 0 then '0' else to_char(my_value, '90D999') end
from dual;

请参阅http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm

于 2012-10-31T11:45:22.567 回答