【发布时间】:2015-11-03 05:28:47
【问题描述】:
我有一个查询,在某些列中,它返回数字,如 1,2,3 等,但我需要分别显示为 1,00,2,00,3,00,我该如何实现?我试过了
CAST(2 as FLOAT(2))
和
ROUND(2, 2)
但那些没有用。我也尝试使用to_char,但是我不明白如何使用遮罩。
【问题讨论】:
标签: sql oracle number-formatting
我有一个查询,在某些列中,它返回数字,如 1,2,3 等,但我需要分别显示为 1,00,2,00,3,00,我该如何实现?我试过了
CAST(2 as FLOAT(2))
和
ROUND(2, 2)
但那些没有用。我也尝试使用to_char,但是我不明白如何使用遮罩。
【问题讨论】:
标签: sql oracle number-formatting
根据您对分隔符的要求设置您的 nls_numeric_characters。使用 TO_CHAR 格式化输出。
SQL> alter session set nls_numeric_characters=',.';
Session altered.
SQL> WITH DATA(num) AS(
2 SELECT 1 FROM dual UNION ALL
3 SELECT 2 FROM dual UNION ALL
4 SELECT 3 FROM dual
5 )
6 SELECT to_char(num, '9D99') FROM DATA;
TO_CH
-----
1,00
2,00
3,00
SQL>
【讨论】:
假设您的目标是选择一个代表数字的字符串,并且您始终希望显示 2 个小数位,并且该字符串遵循会话的 NLS 设置的小数分隔符(无论是逗号还是期间)
select to_char( <<the number>>, '0D99' )
from <<your table>>
如果数字小于 1,这也会打印前导 0。如果您不想要前导 0,请使用“9D99”格式掩码
【讨论】: