2016-08-24 66 views
0

我從表中查詢兩個值。我想使用第二個值來設置第一個值的小數位數。有誰知道如何使用to_char來設置?我正在查看格式,我不知道如何使我得到的int符合我需要的格式。這裏是我的代碼:基於列值設置小數位數

with tmp as (select num, scale 
     from tl) 
select fun, num 
from fun_table f, tmp 
where f.fun = tmp.scale; 

編輯: 如果我收到NUM爲5.87和規模爲3我想要的結果是5.870

民:7.00:1比例預期輸出:7.0

數量:7比例:4預計產量:7.0000

+0

添加一些示例表數據和預期結果。 – jarlh

+0

剛剛添加,讓我知道如果您需要更多信息 – SJR59

+0

您的查詢包括兩個表,tl和fun_table。那些表格的樣本數據是? – jarlh

回答

1

這樣的事情?

SELECT TO_CHAR(num, CONCAT('99D',RPAD('9',scale,'9'))) FROM tl 

,或者,如果scale可以是0,你不希望顯示小數點分隔符在這種情況下,

SELECT TO_CHAR(num, CONCAT('99',RPAD('D',scale+1,'9'))) FROM tl 

在測試了Oracle數據庫11g。

+0

我認爲這可能是正確的!我目前沒有進行測試,但我會在正確的答案(或評論回來,如果沒有的話),當我可以測試!謝謝!! – SJR59

0
select round(fun,scale) from fun_table f, tmp where f.fun = tmp.scale; 

也許這就是你要找的?取決於你想要的邏輯,你可能想用floor或ceil替換round函數。

+0

的小數刻度不會只是將樂趣值放在第num個位置?我不想輪到我收到的任何數據只是設置規模 – SJR59

+0

哦,我看到,抱歉的混亂。然後,您可能需要將該值轉換爲char,因爲對於數字變量,7.0和7.00之間沒有差異。 oracle的語法是to_char(num,'9999.99'),其中'。'後面的9是。在第二個參數中表示您希望顯示的比例數。儘管如此,您可能還需要了解如何構建第二個參數('9999.99'),具體取決於比例列。 – hchaznedaroglu

+0

一切都很好,謝謝你的努力。我只是不知道如何將int值轉換爲我需要將scale設置爲to_char函數的格式。那是我希望得到的幫助哈哈 – SJR59