Oracle SQL - 更改逗号的小数点

时间:2012-10-19 13:01:57

标签: oracle currency comma

我在巴西,我们的货币格式类似于'R $ 9.999,00'。

我正在尝试选择一个字段,并更改返回的格式。但是,似乎我不能这样做。我试过了:

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';

SELECT to_char(10,'9,999.00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL

这些都没有奏效。不确定它是否是我的客户端(我在使用sqldeveloper的Ubuntu上),或者我做错了什么。

有什么想法吗?

4 个答案:

答案 0 :(得分:18)

使用

SELECT to_char(10,'9G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL

G是千位分隔符的符号 D代表小数点分隔符

答案 1 :(得分:4)

我认为你的格式掩码是错误的。请尝试这种格式掩码:

SELECT to_char(10000,'99G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL

确保在格式掩码中使用正确数量的前导'9'以获得更大的数字

答案 2 :(得分:2)

我通过以下方式解决了这个问题:

SELECT TO_CHAR(1000000000,'999G999G999G999D99','NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

以数十亿为单位格式化数字。我认为这有帮助。

答案 3 :(得分:-1)

CREATE OR REPLACE FUNCTION APPS.EX_number_format( ff number) RETURN char IS

xx varchar2(100);
yy varchar2(1);
tt varchar2(100);
x number:=0;
begin
xx:=to_char(ff,'99G990G990G990G990G990D00');
for i  in 1..length(xx) loop
yy:=substr(xx,i,1);
if yy in ('1','2','3','4','5','6','7','8','9') then
x:=i;
exit;
end if;
end loop;

tt:=substr(xx,x,length(xx));
return tt;

END EX_number_format;

从dual中选择EX_number_format(1000);

1,000.00

从dual选择EX_number_format(1859684500);

1,859,684,500.00