【问题标题】:number format in oracleoracle中的数字格式
【发布时间】:2009-10-20 08:44:31
【问题描述】:

喂,

我的数字格式有问题。我正在使用 oracle。 我在数据库中有一个数字字段。但是当我检索它时,我需要将其视为浮点数 例如: 在检索时,现在我得到的结果是 200 DR(借方的 DR,它是手动给出的)。 现在我需要得到 200.00 DR 的结果。 我该如何解决?谁能帮帮我?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您可以使用TO_CHAR 函数来明确格式化数据:

    SQL> SELECT to_char(200.00, 'fm999G999G990D00') FROM dual;
    
    TO_CHAR(200.00,'FM999G999G990D
    ------------------------------
    200.00
    

    【讨论】:

    【解决方案2】:

    像这样使用 TO_CHAR:

    to_char(number,'999999.99')
    

    例如:

    SQL> select to_char(1234.5678,'999999.99')||' DR' as display from dual;
    
    DISPLAY
    -------------
       1234.57 DR
    

    【讨论】:

      【解决方案3】:

      借记的存在意味着需要贷记。在 Oracle SQL 中,我们可以使用 SIGN() 函数来判断一个数字是正数还是负数...

      SQL> select to_char(abs(amt), 'fm999g999d00')||' '
        2              ||case when sign(amt) = -1 then 'DR' else 'CR' end as fmt_amt
        3  from transactions
        4  order by txn_ts, txn_id
        5  /
      
      FMT_AMT
      --------------
      200.00 CR
      200.00 DR
      788.67 CR
      788.67 DR
      
      SQL>
      

      【讨论】:

        【解决方案4】:

        此处建议 TO_CHAR 的答案是正确的,但如果您从应用程序代码中调用此 SQL:

        在不使用 SQL 格式化的情况下获取数字,然后使用您的编程语言对其进行格式化。例如,在 Java 中,使用 DecimalFormat 类。换句话说,保留应用程序特定代码的格式,而不是 SQL。

        【讨论】:

          【解决方案5】:

          可以将附加字符指定为转换的一部分,方法是将它们括在双引号中,这可能会使事情变得更简单:

          To_Char(amount,'fm999G999G990D00" DR"')
          

          【讨论】:

            猜你喜欢
            • 2016-06-28
            • 2021-01-02
            • 2018-05-31
            • 2019-11-25
            • 2018-12-24
            • 1970-01-01
            • 1970-01-01
            • 2018-02-07
            • 1970-01-01
            相关资源
            最近更新 更多