让我们说我有一个weather
列(字符串类型),所有值实际上都是有限的,例如,我们可以假设,它只有五个值{{1 }},AAA
,BBB
,CCC
,DDD
。
由于我想要做一些机器学习算法,我想将列类型更改为EEE
,同时将其值更改为数字INT
(对应于现有值{ {1}})。
如何编写T-SQL代码?
答案 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客户端上运行。