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

1 oracle number-formatting oracle-apex

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

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

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

先感谢您。

Ale*_*ole 5

不幸的是,您不能像日期那样在数字掩码中包含标点符号或字符文字。

\n

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

\n
to_char(<number>, \'FM999G999G999G999G990D00L\', \'nls_currency=\'\' $\'\'\')\n
Run Code Online (Sandbox Code Playgroud)\n

尽管随后使用固定货币符号,而不是 L 格式元素中的会话值;您可以从会话参数动态获取它:

\n
to_char(\n  <number>,\n  \'FM999G999G999G999G990D00L\',\n  (\n    select \'nls_currency=\'\' \' || value || \'\'\'\'\n    from nls_session_parameters where parameter = \'NLS_CURRENCY\'\n  )\n)\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n
alter session set nls_currency = \' \xe2\x82\xac\';\nselect to_char(123.45, \'FM999G999G999G999G990D00L\') from dual;\n
Run Code Online (Sandbox Code Playgroud)\n
to_char(<number>, \'FM999G999G999G999G990D00L\', \'nls_currency=\'\' $\'\'\')\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

数据库<>小提琴

\n