Ответ 1
Использование
SELECT to_char(10,'9G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL
G - символ разделителя тысяч D для десятичного разделителя
Я нахожусь в Бразилии, и наш формат валюты - это что-то вроде "R $9,999,00".
Я пытаюсь выбрать поле и изменить формат возврата. Однако, похоже, я не могу этого сделать. Я пробовал:
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
и
SELECT to_char(10,'9,999.00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL
Никто из них не работал. Не уверен, может ли это быть мой клиент (я на Ubuntu, используя sqldeveloper), или если я что-то делаю неправильно.
Любые идеи?
Использование
SELECT to_char(10,'9G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL
G - символ разделителя тысяч D для десятичного разделителя
Я думаю, что ваша маска формата неверна. Попробуйте эту маску формата:
SELECT to_char(10000,'99G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL
убедитесь, что вы будете использовать правильное количество ведущих "9" в маске формата для больших чисел
Я решил проблему:
SELECT TO_CHAR(1000000000,'999G999G999G999D99','NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
для форматирования числа на миллиарды. Я думаю, что это помогает.
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;
выберите EX_number_format (1000) из двойного;
1,000.00
выберите EX_number_format (1859684500) из двойного;
1,859,684,500.00