異なる数値に対して2つの異なるフォーマットを設定するための簡単でクリーンなソリューションはありますか?
たとえば、0.00 は 0 で、他のすべての数値は x.xxx である必要があります。
これまでの私の解決策:
select decode(to_char(0.000, '90D999'),'0.000', 0, (to_char (0.000, '99990D99999'))) from dual
もっと簡単な解決策があると思うので、私は満足していません。
異なる数値に対して2つの異なるフォーマットを設定するための簡単でクリーンなソリューションはありますか?
たとえば、0.00 は 0 で、他のすべての数値は x.xxx である必要があります。
これまでの私の解決策:
select decode(to_char(0.000, '90D999'),'0.000', 0, (to_char (0.000, '99990D99999'))) from dual
もっと簡単な解決策があると思うので、私は満足していません。
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を参照してください。
CASE-WHEN を使用することもできます...
SELECT (CASE WHEN MY_VALUE=0 THEN '0' ELSE to_char(MY_VALUE, '90D999') END)
FROM DUAL
これはもう少し読みやすいと思いますが、それは主観的なものです...