我在巴西,我们的货币格式类似于'R $ 9.999,00'。
我正在尝试选择一个字段,并更改返回的格式。但是,似乎我不能这样做。我试过了:
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
和
SELECT to_char(10,'9,999.00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL
这些都没有奏效。不确定它是否是我的客户端(我在使用sqldeveloper的Ubuntu上),或者我做错了什么。
有什么想法吗?
答案 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