2011-07-29 31 views
7

Tôi muốn chuyển đổi một cột trong mysql từ varchar thành enum. Nếu giá trị enum mới của tôi bao gồm các giá trị hiện tại, tôi có bị mất các giá trị hiện tại trong cột đó không?Varchar to eNum

+2

Với câu hỏi như thế này, câu trả lời dễ nhất là để thử và tìm hiểu. Bạn có thể làm điều này trên bản sao lưu của bảng để tránh khả năng mất dữ liệu. –

+1

Bạn sẽ tin tưởng một cách mù quáng bất cứ điều gì bạn đọc ở đây và có nguy cơ mất dữ liệu? –

+0

Cho phép tôi không đồng ý với các lập trình viên theo dõi của tôi. Tôi tin rằng những câu hỏi nhỏ nhặt nhưng thú vị có một không gian không có SO. – Frankie

Trả lời

8

Không, nếu các giá trị được bao gồm trong enum, bạn sẽ không bị mất dữ liệu.

+0

cảm ơn !! nó đã làm việc! – MonOve

9

Đối với bản sao dán nghiện như bản thân mình, đưa đầu ra sau đây từ THỦ TỤC PHÂN TÍCH()

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 

Và bằng cách sử dụng lệnh sau để chuyển đổi cột tình trạng của tôi để enum:

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

Đó là ok để bỏ qua DEFAULT 'mới'.