用逗号分隔格式化数字,oracle 中没有 TO_CHAR

Posted

技术标签:

【中文标题】用逗号分隔格式化数字,oracle 中没有 TO_CHAR【英文标题】:Formatting number with comma separation, NO TO_CHAR in oracle 【发布时间】:2012-03-02 01:55:35 【问题描述】:

有人可以建议我如何在不使用 TO_CHAR 函数的情况下使用逗号分隔来显示数字。

NUMBER 3455678.05 应显示为 3,455,678.05 NUMBER 3455678 应显示为 3,455,678

【问题讨论】:

如果您不想或不能使用完美的工具来完成这项工作,您必须给出充分的理由。 【参考方案1】:

不使用 TO_CHAR() 是不可能的,除非它可以在客户端程序中处理。

例如,在 SQL*Plus 中,您可以这样做:

set numformat 999,999,999,999,999.00

但这不是一个完整的示例,因为 3455678.05 将打印为 3,455,678.05,但 3455678 将打印为 3,455,678.00。

正确的解决方案是使用 TO_CHAR() 函数,同时设置 NLS_TERRITORY 和/或 NLS_NUMERIC_CHARACTERS 以正确格式化输出。

希望对您有所帮助。

【讨论】:

实际上我认为“正确的解决方案”是让客户端程序处理显示问题,正如您在 SQLPlus 示例中所示。这都是关于*关注点分离【参考方案2】:

显示格式应该在您的应用程序或表示层中完成,而不是通过 SQL。

如果你坚持这样做,那么正如 Mark J. Bobak 所说,to_char 是你唯一的选择。

【讨论】:

以上是关于用逗号分隔格式化数字,oracle 中没有 TO_CHAR的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11.2 to_number 多个逗号

PHP数字格式不带逗号

正则表达式将数字转换为逗号分隔的数字,可选两位小数

在 ORACLE 中,有没有办法使用两个表将多行行连接成一个行,其中最终值用逗号分隔?

Oracle 行转列,逗号分隔

oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)