【问题标题】:How to select numbers with precision in Oracle如何在 Oracle 中精确选择数字
【发布时间】: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】:

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

      假设您的目标是选择一个代表数字的字符串,并且您始终希望显示 2 个小数位,并且该字符串遵循会话的 NLS 设置的小数分隔符(无论是逗号还是期间)

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

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

      【讨论】:

      • 最终使用了掩码 -> 'FM9G999G999G999G990D0'
      猜你喜欢
      • 1970-01-01
      • 2018-04-17
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多