2015-12-08 44 views
0

假設我有一列weather(字符串類型),它的所有值實際上都是有限的,例如,我們可以假設它只有五個值,其中AAABBBCCC,DDD,EEESQL Server:將列字符串轉換爲離散整數

因爲我想要做一些機器學習算法,我想列類型更改爲INT,並在同一時間,改變其值轉換爲數字1, 2, 3, 4, 5(相當於現有值AAA, BBB, CCC, DDD, EEE)。

如何編寫T-SQL代碼?

+0

你使用哪個dbms?!?不要標記不涉及的產品... – jarlh

+0

@jarlh對不起,我刪除了不相關的標籤。 –

回答

0

用兩列創建另一個表:一個int和一個字符串。用5個字符串和5個唯一整數填充新表格。通過字符串將兩個表連接在一起。維奧拉,你有整數。

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; 

ALTER TABLE刪除舊的天氣列。

4.ALTER TABLE,這一次重命名new_weather_colweather

(編輯:也許我應該補充步0 - 確保你有繼續前你的表備份-ED)

+0

重命名之前,請不要忘記「下降列天氣」。 – Kobi

+0

當然可以。我會編輯。謝謝! – jarlh

+0

行,解決了我的問題,非常感謝@jarlh –

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客戶端上運行。