如何将文本值转换为数值?

时间:2016-12-30 14:43:26

标签: sql

我有一个名为FREQUENCY的列,有4个可能的值:

Every 3 Months
Every 6 Months
Every Month
Every 4 Weeks

我想将这些值转换为数值。分别为1 / 3,1 / 6,1和4,以便我可以对它们执行方程式。

如何将这些值转换为上述数值?有没有办法告诉系统,例如,“每月”应该显示为数字1?

感谢您的时间。

2 个答案:

答案 0 :(得分: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 :(得分:0)

是的,使用" case"声明你可以得到你想要的值。例如:

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.看一下这句话的结果。如上所述,您可以使用case语句获取数值 2.您可以在your_table中添加float字段:

alter table your_table add (newfield float)

3.根据FREQUENCY字段值,按所需值启动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计算您想要的任何内容。