SQL to_char货币格式

时间:2014-08-28 09:22:11

标签: sql oracle currency to-char

我在这里面临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的错误。代码有什么问题吗?

3 个答案:

答案 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