2011-07-29 53 views
7

我想將mysql中的列從varchar轉換爲enum。如果我的新枚舉值包含現有值,我會失去該列中的現有值嗎?Varchar to eNum

+2

像這樣的問題,最簡單的答案就是試着找出答案。您可以在表的備份上執行此操作,以避免數據丟失的可能性。 –

+1

你會盲目信任你在這裏閱讀的任何內容,並有可能丟失數據嗎? –

+0

允許我不同意我的跟隨程序員。我確實認爲那些微不足道但有趣的問題沒有SO。 – Frankie

回答

8

不,如果值包含在枚舉中,則不會丟失數據。

+0

謝謝!!有效! – MonOve

9

對於複製粘貼迷們喜歡自己,因爲從程序輸出以下ANALYSE()

SELECT status FROM post PROCEDURE ANALYSE()\G 
*************************** 1. row *************************** 
      Field_name: crawling.post.status 
       Min_value: done 
       Max_value: pulled 
      Min_length: 3 
      Max_length: 6 
     Empties_or_zeros: 0 
        Nulls: 0 
Avg_value_or_avg_length: 3.7880 
        Std: NULL 
     Optimal_fieldtype: ENUM('done','new','pulled') NOT NULL 

並使用下面的命令來我的狀態列轉換爲枚舉:

ALTER TABLE post MODIFY COLUMN status ENUM('done', 'new', 'pulled') DEFAULT 'new'; 

它的確定跳過默認'新'。