在 oracle APEX 货币格式掩码中插入空格

我正在使用 oracle APEX 20.1 并有一个报告,其中有一列显示货币值。 由于我来自欧洲,因此我需要在值后面加上货币符号(与您在美国经常看到的典型 $amount 格式不同)。

我通过将列的格式掩码更改为“FM999G999G999G999G990D00L”来实现这一点。 到目前为止,这很有效,但从视觉上看,我更喜欢数字结尾 (D00) 和货币符号 (L) 之间有一个空格。有没有办法在这个格式字符串中插入一个静态空格?

我已经查看了 oracle 关于货币格式字符串的文档,但他们似乎没有提到包含始终存在的空格或任意静态字符的选项。

提前致谢。

hyowinner 回答:在 oracle APEX 货币格式掩码中插入空格

很遗憾,您不能像 for dates 那样在数字掩码中包含标点符号或字符文字。

您可以包含一个空格作为货币符号本身的一部分 - 这是一个字符串,而不是一个字符,并且可以是 up to 10 bytes

to_char(<number>,'FM999G999G999G999G990D00L','nls_currency='' $''')

虽然它使用了一个固定的货币符号,而不是来自 L 格式元素的会话值;您可以从会话参数中动态获取它:

to_char(
  <number>,(
    select 'nls_currency='' ' || value || ''''
    from nls_session_parameters where parameter = 'NLS_CURRENCY'
  )
)

有点难看。而且您可能实际上并不想要会话的货币符号;始终使用与该数据相关的符号可能更合适。

而且我认为这些都不适合 Apex 的数字列格式,因此您可能需要在查询中显式执行 to_char() 调用,并让 Apex 将其视为预先格式化的字符串。 (我不知道 Apex 中的格式是如何工作的 - 根据您的描述,我假设您在某个地方为交互式网格中的列或其他任何内容定义了格式掩码;但也许您已经在调用 to_char()。)

您还可以更改会话的货币符号:

alter session set nls_currency = ' €';
select to_char(123.45,'FM999G999G999G999G990D00L') from dual;
123.45 €

这可能是一个选项,但会影响所有货币字段 - 使用 L 格式元素的地方 - 虽然这可能是一件好事。

db<>fiddle

本文链接:https://www.f2er.com/59153.html

大家都在问