2014-05-01 71 views
-1

後,我有表以下值顯示1精度值數值(在Oracle)

Column_A (Type is Varchar) 
    0.181 
    165 
    0.13 
    0.034 
    Count 

必出把

18.1% 
165 
13.0% 
3.4% 
Count 

所以只爲十進制值應該以百分比轉換。

我通過下面的語法這是所有結果做工精細,在這裏唯一的問題試圖爲價值0.13生產提高到13%,但並不13.0%

SELECT 
CASE WHEN COLUMN_A LIKE '%.%' THEN CAST(CAST(COLUMN_A AS DECIMAL(10,3))*100 AS VARCHAR2(8))||'%' ELSE COLUMN_F END AS COLUMN_F 
FROM Table_a; 

任何人都不會有簡單建議在查詢改變?

+0

「十進制值」對您意味着什麼?那個數值小於1嗎?或者一個不是整數的數值?或者是其他東西? –

+0

@Justin是它的任何數值不是整數。原始列類型是Varchar,它具有Int,Decimal和String值。我只應將十進制類型值轉換爲百分比。 – user3594484

+0

多麼奇怪的要求。太糟糕如果百分比是一個整數,即0%或100%,它不能被正確解釋。 –

回答

1

試試這個:

SELECT 
    CASE 
    WHEN COLUMN_A LIKE '%.%' THEN 
     TO_CHAR(CAST(COLUMN_A AS DECIMAL(10,3))*100, '999.0') || '%' 
    ELSE COLUMN_A 
    END AS COLUMN_F 
FROM Table_a; 

SQLFiddle here

分享和享受。

+0

謝謝鮑勃。它的工作 – user3594484