我试图找出 to_char() 的格式规范,它会给我以下结果。
to_char(0.1, '[FORMAT_SPEC]')
给出 0.1 并且:
to_char(1, '[FORMAT_SPEC]')
gives 1.
我尝试过以下解决方案:
to_char(0.1)
给出“.1”。
to_char(0.1, 'FM0.099')
给出 0.1,这是可以的,但是:
to_char(1, 'FM0.099')
给出 1.0,这是不行的。
你有什么建议吗?
返回的精度需要一致,所以唯一的选择是使用DECODE http://techonthenet.com/oracle/functions/decode.php or CASE http://techonthenet.com/oracle/functions/case.php有条件地返回您需要的内容的语句:
CASE
WHEN INSTR(TO_CHAR(t.col), '.') = 0 THEN TO_CHAR(t.col)
ELSE TO_CHAR(t.col, 'FM0.099')
END
这个例子不太好 - 不清楚你的数据是否会有这样的值1.000
或高于一的值/等等。
编辑 Michael-O (2013-06-25):对于那些需要防白痴的人,您可以尝试:
case
when instr(to_char(<col>), (select to_char(0, 'FMD') from dual)) = 0
then to_char(<col>)
else to_char(<col>, 'FM999990D999')
end
它会自动观察小数点分隔符。根据您的数字大小调整第二种格式模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)