【问题标题】:Oracle SQL Commas format?Oracle SQL 逗号格式?
【发布时间】:2019-11-15 21:00:17
【问题描述】:

我想让我的号码有逗号

4333 ---> 4,333

我想出了这个

TO_CHAR(COUNT(*),'$9,999.99') AS TOTAL_APPS

基本上我计算数据库中的所有内容并希望逗号存在,这已经在一个 select 语句中,并且根据 oracle 文档是逗号的结构,有什么问题?

【问题讨论】:

标签: sql oracle


【解决方案1】:

那么,你的想法有什么问题?不是你想要的吗?

不过,您似乎是在 Internet 的某个地方找到它并应用于您的情况,因为

这就是你所拥有的:

4333

这就是你想要的:

4,333

这就是你所拥有的(使用'$9,999.99' 格式掩码),即有一个美元符号和小数,你显然不想要:

SQL> select to_char(4333, '$9,999.99') result from dual;

RESULT
----------
 $4,333.00

如果您将格式掩码更改为:

SQL> select to_char(4333, '9G999', 'nls_numeric_characters = .,') result from dual;

RESULT
------
 4,333

你可能会得到你想要的。

我为什么要这样使用它? G 是“千”分隔符。在不同的数据库中可以不同;有人使用逗号,其他人使用点等。NLS_NUMERIC_CHARACTERS 表示 G 标记实际使用的是哪个字符,所以它可能是例如

SQL> select to_char(4333, '9G999', 'nls_numeric_characters = ^=') result from dual;

RESULT
------
 4=333

【讨论】:

  • 您好,非常感谢您的回答让问题变得清晰!这个 tochar 方法会改变数据类型吗?因为当我尝试插入它时,它说无效数字,因为列数据类型是数字
【解决方案2】:

仅适用于 SQLPlus 的另一种方法是使用 SQLPlus 格式。

在这个例子中,一个简单的查询返回一个大数字。在没有格式化的情况下,我们只需要返回纯数字。

SQL> select 373746764  from dual;

 373746764
----------
 373746764

让我们给它一个别名,仍然没有格式化:

SQL> select 373746764 tn from dual;

        TN
----------
 373746764

现在让我们在 SQL*PLUS 中使用COL 格式化命令:

SQL> col tn form '999,999,990.00'

SQL> select 373746764 tn from dual;

             TN
---------------
 373,746,764.00

所以,。在您的情况下,您可以创建一个包含所有这些 COL column_alias 可以调用的命令的脚本,并确保您的脚本具有适当的列别名来匹配。

例如一个名为formating.sql的脚本:

COL total_apps form '999,999,990'
COL total_cost form '999,999,990.00'

那么你的report.sql scriopt可以有:

@formatting.sql

SELECT COUNT(*) TOTAL_APPS FROM the_table;

我认为这也适用于 SQL Developer,但正如我所说,这种方法适用于 SQL*Plus。

对于更广泛的结果,每个查询的 TO_CHAR 是要走的路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2012-10-10
    • 2021-03-17
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多