【问题标题】:Change number output [.] to [,] in pl/sql在 pl/sql 中将数字输出 [.] 更改为 [,]
【发布时间】:2014-09-04 18:01:01
【问题描述】:

我的函数应该将数字符号从 12345.67€ 更改为 12345,67€

 select

        replace(
    to_char(round(

    123456.789

    ,2),'999G999G999G990D'||substr('0000000000',1,2),'nls_numeric_characters=''.,'''),'.',','
    ) || ' €' 

    from dual;

目前的结果是: 123,456,79 欧元 我想得到的结果: 123456,79 欧元

但我不知道怎么做。我的 oracle 以 123456.79 格式返回值,所以这是我计算的原因。有人知道该怎么做吗?

【问题讨论】:

  • 值得 - 格式化数字通常是 UI 功能,而不是数据层功能。
  • 从我的角度来看,即使将欧元符号放在末尾也不正确。

标签: sql oracle plsql oracle-apex


【解决方案1】:

以 ALTER SESSION SET NLS_TERRITORY='SWEDEN' 为例。或爱沙尼亚。
数字格式派生自 NLS_TERRITORY 参数的设置,但它们可以被 NLS_NUMERIC_CHARACTERS 参数覆盖。

【讨论】:

  • 我在 apex 上工作,如何正确地做才能始终保持更改?我不希望我的应用出现问题
【解决方案2】:

您应该在会话或查询中设置 NLS 参数(如果它们尚未正确),例如

select to_char(123456.789
              ,'9999990D00L'
              ,'nls_numeric_characters='',.'' nls_currency=''€''')
from dual

【讨论】:

    【解决方案3】:
    select
    
    replace(
    to_char(round(
    
    123456.789
    
    ,2),'999999999990D'||substr('0000000000',1,2),'nls_numeric_characters=''.,'''),'.',','
    ) || ' €' 
    
    from dual;   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2023-03-24
      • 2018-07-08
      • 2015-07-06
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多