如何在 Oracle 中精确地 select 数字

How to select numbers with precision in Oracle

我有一个查询,在某些列中,它 returns 数字,例如 1、2、3 等,但我需要将它们分别显示为 1,00、2,00、3,00 ,我怎样才能实现呢?我试过了

CAST(2 as FLOAT(2))

ROUND(2, 2)

但这些都不起作用。我也试过使用to_char,但我不明白如何使用掩码。

假设您的目标是 select 一个表示数字的字符串,并且您始终希望显示 2 个小数位,并且该字符串要遵守会话的 NLS 小数点分隔符设置(无论是那是逗号或句号)

select to_char( <<the number>>, '0D99' )
  from <<your table>>

如果数字小于 1,这也会打印前导 0。如果您不需要前导 0,请使用“9D99”格式掩码

根据您对分隔符的要求设置您的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>