2016-12-30 85 views
0

我有一個名爲頻率4個可能的值列:如何將文本值轉換爲數值?

Every 3 Months 
Every 6 Months 
Every Month 
Every 4 Weeks 

我想這些值轉換爲數值。 1/3,1/6,1和4,這樣我就可以對它們執行方程式。

如何將這些值轉換爲上述數值?例如,有沒有辦法告訴系統「每月」應該顯示爲數字1?

謝謝你的時間。

回答

4

使用CASE聲明

Select 
Case when FREQUENCY = 'Every 3 Months' then 1/3.0 -- added .0 to avoid integer division 
    When FREQUENCY = 'Every 6 Months' then 1/6.0 
    When FREQUENCY = 'Every Month' then 1 
    Else 4 
End 

更新:如果你想1/3代替0.333然後使它作爲字符串

Select 
Case when FREQUENCY = 'Every 3 Months' then '1/3' 
    When FREQUENCY = 'Every 6 Months' then '1/6' 
    When FREQUENCY = 'Every Month' then '1' 
    Else '4' 
End 

注:你需要讓所有的結果表達式作爲字符串以避免隱式轉換

+1

很好的答案,但是操作者可能想要顯示「1/3」,「1/6」,「1」,而不是數字。 –

+1

謝謝Gordan,因爲這條線我認爲是數字*我可以對它們執行方程式*可能是錯的 –

+0

@GordonLinoff - 在答案中添加了它 –

0

是,使用「案例」的語句,你可以得到值你want.For例如:

select FREQUENCY, 
case FREQUENCY 
when 'Every 3 Months' then 1/3 
when 'Every 6 Months' then 1/6 
when 'Every Month' then 1 
when 'Every 4 Weeks' then 4 
else -1 
end 
from your_table;  

1.Take看看這個語句的結果。如上所述,您可以使用case語句來獲取數字值。
2.You可以添加float場your_table:

alter table your_table add (newfield float) 

3.Initiate您newfield通過根據頻率字段值所需的值。

update your_table set newfield = 
case FREQUENCY 
when 'Every 3 Months' then 1/3 
when 'Every 6 Months' then 1/6 
when 'Every Month' then 1 
when 'Every 4 Weeks' then 4 
else -1 
end 

4.使用您的newfield計算任何你想要的。