假設我有一列weather
(字符串類型),它的所有值實際上都是有限的,例如,我們可以假設它只有五個值,其中AAA
,BBB
,CCC
,DDD
,EEE
。SQL Server:將列字符串轉換爲離散整數
因爲我想要做一些機器學習算法,我想列類型更改爲INT
,並在同一時間,改變其值轉換爲數字1, 2, 3, 4, 5
(相當於現有值AAA, BBB, CCC, DDD, EEE
)。
如何編寫T-SQL代碼?
假設我有一列weather
(字符串類型),它的所有值實際上都是有限的,例如,我們可以假設它只有五個值,其中AAA
,BBB
,CCC
,DDD
,EEE
。SQL Server:將列字符串轉換爲離散整數
因爲我想要做一些機器學習算法,我想列類型更改爲INT
,並在同一時間,改變其值轉換爲數字1, 2, 3, 4, 5
(相當於現有值AAA, BBB, CCC, DDD, EEE
)。
如何編寫T-SQL代碼?
用兩列創建另一個表:一個int和一個字符串。用5個字符串和5個唯一整數填充新表格。通過字符串將兩個表連接在一起。維奧拉,你有整數。
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;
ALTER TABLE
刪除舊的天氣列。
4.ALTER TABLE
,這一次重命名new_weather_col
到weather
。
(編輯:也許我應該補充步0 - 確保你有繼續前你的表備份-ED)
如果你有寫這個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客戶端上運行。
你使用哪個dbms?!?不要標記不涉及的產品... – jarlh
@jarlh對不起,我刪除了不相關的標籤。 –