Oracle 中的自动格式化货币字段

Posted

技术标签:

【中文标题】Oracle 中的自动格式化货币字段【英文标题】:Auto-formatting currency fields in Oracle 【发布时间】:2015-05-24 04:37:56 【问题描述】:

我正在开发 Oracle 报告。它有大约 15 个货币字段。派生这些值的数据库列的数据类型为 NUMBER(m,n)。

我在报告中将它们格式化如下:

SELECT TO_CHAR(field1,'99,999,999.99') --field1 datatype NUMBER(8,2)
SELECT TO_CHAR(field2,'99,999,999,999.99') --field2 datatype NUMBER(11,2)

Oracle 有没有办法根据字段的数据类型精度自动格式化字段?

基本上我想防止对'99,999,999.99'format 进行硬编码,并让Oracle 这样做,因为它已经知道该字段的精度。

【问题讨论】:

【参考方案1】:

我相信您在这里寻找的是格式掩码。

SELECT TO_CHAR(99999999.99,'FM9G999G999G999G990D00') from dual;
Output: 99,999,999.99

SELECT TO_CHAR(99999999999.99,'FM9G999G999G999G990D00') from dual;
Output: 99,999,999,999.99

SELECT TO_CHAR(123.54,'FM9G999G999G999G990D00') from dual;
Output: 123.54

SELECT TO_CHAR(18945.65,'FM9G999G999G999G990D00') from dual;
Output: 18,945.65

编辑:为了澄清 FM9G999G999G999G990 应该处理最大精度,而 D00 应该处理到第十位。

【讨论】:

出于可读性原因,我喜欢使用实际的逗号、小数点和悲伤符号:SELECT TO_CHAR(99999990.00,'FM$9,999,999,999,990.00') FROM DUAL 使用 G 和 D 而非文字字符有什么好处?

以上是关于Oracle 中的自动格式化货币字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIAlertview 中为文本字段设置货币格式

如何在报表生成器中动态格式化货币字段?

货币格式化程序不是用户友好/直观的。随机增加输入字段

格式化货币 - Swift

如何使用 Aspose 维护或强制 PDF 中的货币格式

如何更改数据库中每个字段的每个格式?