【发布时间】:2009-10-20 08:44:31
【问题描述】:
喂,
我的数字格式有问题。我正在使用 oracle。 我在数据库中有一个数字字段。但是当我检索它时,我需要将其视为浮点数 例如: 在检索时,现在我得到的结果是 200 DR(借方的 DR,它是手动给出的)。 现在我需要得到 200.00 DR 的结果。 我该如何解决?谁能帮帮我?
【问题讨论】:
标签: oracle
喂,
我的数字格式有问题。我正在使用 oracle。 我在数据库中有一个数字字段。但是当我检索它时,我需要将其视为浮点数 例如: 在检索时,现在我得到的结果是 200 DR(借方的 DR,它是手动给出的)。 现在我需要得到 200.00 DR 的结果。 我该如何解决?谁能帮帮我?
【问题讨论】:
标签: oracle
您可以使用TO_CHAR 函数来明确格式化数据:
SQL> SELECT to_char(200.00, 'fm999G999G990D00') FROM dual;
TO_CHAR(200.00,'FM999G999G990D
------------------------------
200.00
【讨论】:
像这样使用 TO_CHAR:
to_char(number,'999999.99')
例如:
SQL> select to_char(1234.5678,'999999.99')||' DR' as display from dual;
DISPLAY
-------------
1234.57 DR
【讨论】:
借记的存在意味着需要贷记。在 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>
【讨论】:
此处建议 TO_CHAR 的答案是正确的,但如果您从应用程序代码中调用此 SQL:
在不使用 SQL 格式化的情况下获取数字,然后使用您的编程语言对其进行格式化。例如,在 Java 中,使用 DecimalFormat 类。换句话说,保留应用程序特定代码的格式,而不是 SQL。
【讨论】:
可以将附加字符指定为转换的一部分,方法是将它们括在双引号中,这可能会使事情变得更简单:
To_Char(amount,'fm999G999G990D00" DR"')
【讨论】: