SQL Server:将列字符串转换为离散整数

时间:2015-12-08 11:44:04

标签: sql sql-server

让我们说我有一个weather列(字符串类型),所有值实际上都是有限的,例如,我们可以假设,它只有五个值{{1 }},AAABBBCCCDDD

由于我想要做一些机器学习算法,我想将列类型更改为EEE,同时将其值更改为数字INT(对应于现有值{ {1}})。

如何编写T-SQL代码?

3 个答案:

答案 0 :(得分:3)

1。ALTER TABLE添加新列new_weather_col整数。

2。执行UPDATE设置new_weather_col的值:

update tablename
set new_weather_col = case weather when 'AAA' then 1
                                   when 'BBB' then 2
                                   when 'CCC' then 3
                                   when 'DDD' then 4
                                   when 'EEE' then 5
                      end;

3。 ALTER TABLE放弃旧天气栏。

再次

4。 ALTER TABLE,这次要将new_weather_col重命名为weather

(编辑:也许我应该添加第0步 - 确保在继续之前备份你的表。

答案 1 :(得分:0)

创建另一个包含两列的表:int和string。使用5个字符串和5个唯一整数填充新表。通过字符串将两个表连接在一起。中提琴,你有整数。

答案 2 :(得分:0)

如果必须为此编写一个返回整数而不是字符串的SQL查询,则可以在case语句中执行此操作,因为您有固定的值集。

select 1, case when weather = 'AAA' then 1 
                 when weather = 'BBB' then 2 
                 when weather = 'CCC' then 3
when weather = 'DDD' then 4
when weather = 'EEE' then 5 

            end 
from DUAL;  

我在这里使用了pl sql。您也可以在MySQL中执行此操作。查询代码段只是为您举例。这不会在sql客户端上运行。