我试图找出to_char()的格式规范,它会给我以下结果.
to_char(0.1, '[FORMAT_SPEC]')
Run Code Online (Sandbox Code Playgroud)
给出0.1和:
to_char(1, '[FORMAT_SPEC]')
Run Code Online (Sandbox Code Playgroud)
给出1.
我尝试过以下解决方案:
to_char(0.1)
Run Code Online (Sandbox Code Playgroud)
给'.1'.
to_char(0.1, 'FM0.099')
Run Code Online (Sandbox Code Playgroud)
给出0.1,这没关系,但是:
to_char(1, 'FM0.099')
Run Code Online (Sandbox Code Playgroud)
给出1.0,这是不行的.
你有什么建议吗?
返回的精度需要保持一致,因此唯一的选择是使用DECODE或CASE语句有条件地返回您需要的内容:
CASE
WHEN INSTR(TO_CHAR(t.col), '.') = 0 THEN TO_CHAR(t.col)
ELSE TO_CHAR(t.col, 'FM0.099')
END
Run Code Online (Sandbox Code Playgroud)
这个例子并不是很好 - 不清楚你的数据是否具有类似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
Run Code Online (Sandbox Code Playgroud)
它会自动观察小数分隔符.将secodn格式模式调整为您的数字大小.
归档时间: |
|
查看次数: |
10622 次 |
最近记录: |