Varchar到eNum

时间:2011-07-29 18:14:18

标签: mysql

我想将mysql中的列从varchar转换为enum。如果我的新枚举值包含现有值,我会丢失该列中的现有值吗?

2 个答案:

答案 0 :(得分:13)

对于像我这样的复制粘贴迷,给出了PROCEDURE ANALYZE()的以下输出

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';

可以跳过DEFAULT'new'。

答案 1 :(得分:9)

不,如果值包含在枚举中,则不会丢失数据。