我有一个名为FREQUENCY的列,有4个可能的值:
Every 3 Months
Every 6 Months
Every Month
Every 4 Weeks
我想将这些值转换为数值。分别为1 / 3,1 / 6,1和4,以便我可以对它们执行方程式。
如何将这些值转换为上述数值?有没有办法告诉系统,例如,“每月”应该显示为数字1?
感谢您的时间。
答案 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
计算您想要的任何内容。