15

私はブラジルにいます。通貨形式は「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

4 に答える 4

22

使用する

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

G は千単位の区切り記号 D は小数点記号

于 2012-10-19T13:15:27.840 に答える
4

フォーマット マスクが間違っていると思います。次のフォーマット マスクを試してください:

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

より大きな数値の場合は、フォーマット マスクで先頭の '9' の正しい数を使用するようにしてください。

于 2012-10-19T13:16:14.280 に答える
-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;

デュアルから EX_number_format(1000) を選択します。

1,000.00

デュアルから EX_number_format(1859684500) を選択します。

1,859,684,500.00

于 2017-03-14T10:48:41.147 に答える