Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中选择精确的数字_Sql_Oracle_Number Formatting - Fatal编程技术网

Sql 如何在Oracle中选择精确的数字

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 <<

我有一个查询,在一些列中,它返回数字,如1,2,3等,但我需要分别显示为1,00,2,00,3,00,我如何实现它?我试过了

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>