Sql 如何在Oracle中选择精确的数字
我有一个查询,在一些列中,它返回数字,如1,2,3等,但我需要分别显示为1,00,2,00,3,00,我如何实现它?我试过了Sql 如何在Oracle中选择精确的数字,sql,oracle,number-formatting,Sql,Oracle,Number Formatting,我有一个查询,在一些列中,它返回数字,如1,2,3等,但我需要分别显示为1,00,2,00,3,00,我如何实现它?我试过了 CAST(2 as FLOAT(2)) 及 但这些都不起作用。我还尝试使用to_char,但我不知道如何使用掩蔽。假设您的目标是选择一个表示数字的字符串,并且您始终希望显示两位小数,并且该字符串遵守会话的NLS设置,无论是逗号还是句点 select to_char( <<the number>>, '0D99' ) from <<
CAST(2 as FLOAT(2))
及
但这些都不起作用。我还尝试使用to_char,但我不知道如何使用掩蔽。假设您的目标是选择一个表示数字的字符串,并且您始终希望显示两位小数,并且该字符串遵守会话的NLS设置,无论是逗号还是句点
select to_char( <<the number>>, '0D99' )
from <<your table>>
如果数字小于1,也将打印前导0。如果不需要前导0,请使用9D99格式掩码,根据您对分隔符的要求设置nls\u数字\u字符。使用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>
最终使用了掩码->“FM9G999G999G999G990D0”
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>