2014-09-04 57 views
0

我一直認爲應該從12345.67€到12345,67€更改數字輸出[,]在PL/SQL

select 

     replace(
    to_char(round(

    123456.789 

    ,2),'999G999G999G990D'||substr('0000000000',1,2),'nls_numeric_characters=''.,'''),'.',',' 
    ) || ' €' 

    from dual; 

當前結果換號的符號函數是: 123,456,79 € 我想要的結果: 123456,79€

但是我不知道如何。我的oracle以格式123456.79返回值,所以這是我計算的原因。 Doe的任何人都知道該怎麼辦?

+3

爲什麼值得 - 格式化數字通常是一個UI函數,而不是數據層函數。 – 2014-09-04 18:03:14

+0

從我的角度來看,即使把歐元符號放在最後也是不對的。 – AndreDuarte 2014-09-04 18:17:20

回答

2

例如,ALTER SESSION SET NLS_TERRITORY ='SWEDEN'。或愛沙尼亞。
數字格式是從NLS_TERRITORY參數的設置派生的,但它們可以被NLS_NUMERIC_CHARACTERS參數覆蓋。

+0

我是,在頂尖工作,如何做到這一點,以保持所有的時間變化?我不想在我的應用程序中出現問題 – user3376246 2014-09-04 18:29:33

0
select 

replace(
to_char(round(

123456.789 

,2),'999999999990D'||substr('0000000000',1,2),'nls_numeric_characters=''.,'''),'.',',' 
) || ' €' 

from dual; 
1

您應該在會話或查詢中設置NLS參數(如果它們尚不正確)

select to_char(123456.789 
       ,'9999990D00L' 
       ,'nls_numeric_characters='',.'' nls_currency=''€''') 
from dual