我在这里面临to_char()
货币格式问题。
以下代码对我有用:
SELECT TO_CHAR(10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = ''.,''
NLS_CURRENCY = ''$''') "Amount"
FROM DUAL;
将为我提供输出:$10,000.00
。
现在,我希望将货币转换为法国货币,其中期望输出为10 000,00
或瑞士货币,输出为10'000.00
。因此,对于上述两种情况,我修改了如下所示的代码:
SELECT TO_CHAR(10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = ''"", ""''
NLS_CURRENCY = ''$'' ') "Amount"
FROM DUAL;
SELECT TO_CHAR(10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = ''". "''
NLS_CURRENCY = ''$'' ') "Amount"
FROM DUAL;
但是此代码不起作用并显示ORA-12702
的错误。代码有什么问题吗?
答案 0 :(得分:6)
如果您想在查询中执行此操作:
SELECT TO_CHAR(10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = ''.''''''
NLS_CURRENCY = ''$'' ') "Amount"
FROM DUAL;
给出$10'000.00
(因为这个字符串正在预处理,所以在字符周围有成对的引号(变成单个),然后在字符串中获得单引号,你需要四个引号成为一个!)
SELECT TO_CHAR(10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = '', ''
NLS_CURRENCY = ''$'' ') "Amount"
FROM DUAL;
提供$10 000,00
答案 1 :(得分:3)
这也可以使用,因为法国国家已知道十进制表示法
char str[32];
strftime(str, sizeof(str), "%c", localtime(&buf.st_atime));
printf("Last access: %s.\n", str);
答案 2 :(得分:2)
作为其中一个选项,您可以在会话级别设置NLS_TERRITORY
参数:
alter session set nls_territory='FRANCE';
select to_char(10000, 'fm99G999D00') as french
from dual;
结果:
FRENCH
----------
10 000,00
alter session set nls_territory='SWITZERLAND';
select to_char(10000, 'fm99G999D00') as switzerland
from dual
结果:
SWITZERLAND
-----------
10'000.00