很遗憾,您不能像 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