2017-07-26 75 views
0

好吧,所以(說)我有一個數字,如7836.721。我想一個Oracle查詢,可以給我下面的結果:回合一個數字並在oracle中保留尾隨零

7837.000 

數量應四捨五入到一個人的地方,小數點後的所有數字被轉換到零。

我用什麼:

select round(7836.721,0) from dual 

這給了我:

7837 

任何幫助,將不勝感激。

回答

2

聽起來像是你需要TO_CHAR ...

SELECT to_char(TRUNC(7836.721), '9999990.000') numbr 
FROM dual; 

NUMBR 
------------ 
    7837.000 

這並假定你之後的任何數量的3位小數,而不是7.12要去7.00是。


ETA:

這似乎是一個很奇怪的規定,但在這裏你去:地方後

WITH sample_data AS (SELECT 123 numbr FROM dual UNION ALL 
        SELECT 123.12 numbr FROM dual UNION ALL 
        SELECT 123.1234 numbr FROM dual UNION ALL 
        SELECT 123.12345 numbr FROM dual UNION ALL 
        SELECT 0.12345 numbr FROM dual UNION ALL 
        SELECT 1.23456789e50 numbr FROM dual UNION ALL 
        SELECT NULL numbr FROM dual UNION ALL 
        SELECT 1.23e-50 numbr FROM dual) 
SELECT numbr, 
     ROUND(numbr) || CASE WHEN numbr != TRUNC(numbr) THEN 
           RPAD('.', LENGTH(numbr -TRUNC(numbr)), '0') END new_numbr 
FROM sample_data; 

    NUMBR NEW_NUMBR 
---------- -------------------------------------------------------------------------------- 
     123 123 
    123.12 123.00 
    123.1234 123.0000 
123.12345 123.00000 
    0.12345 0.00000 
1.23456789 1.23456789E+50 

    1.23E-50 0.000000000000000000000000000000000000000 
+0

是的,你的查詢做的伎倆,但如果我的小數不固定爲3. – hashir

+0

在那種情況下,我會好奇你爲什麼要輸出小數點後的0。無論在小數點後有多少尾隨0,數字都是相同的。此外,如果您使用的是給定格式,即通常顯示的小數位數相同,您通常會希望輸出保持一致。 – Boneist

+0

我明白你的好奇心。尾隨零需要在表格中呈現。現在,如果我在一列中的小數點後有不同的數字位數,那麼我怎樣才能以動態的方式實現這個必要? 有沒有可能? – hashir