ENUM 類型
ENUM 是一個字符串對象,其值通常選自一個允許值列表中,該列表在表創建時的列規格說明中被明確地列舉。
在下列某些情況下,值也可以是空串("") 或 NULL:
每個枚舉值均有一個索引值:
MySQL> SELECT * FROM tbl_name WHERE enum_col=0;
例如,指定為 ENUM("one", "two", "three") 的一個列,可以有下面所顯示的任一值。每個值的索引值也如下所示:
值 索引值 NULL NULL "" 0 "one" 1 "two" 2 "three" 3換個枚舉最大可以有 65535 個成員值。
從 MySQL 3.23.51 開始,當表被創建時,ENUM 值尾部的空格將會自動刪除。
當為一個 ENUM 列賦值時,字母的大小寫是無關緊要的。然而,以後從列中檢索出來的值的大小寫卻是匹配於創建表時所指定的允許值。
如果在一個數字語境中檢索一個ENUM,列值的索引值將被返回。例如,你可以像這樣使用數字值檢索一個 ENUM 列:
MySQL> SELECT enum_col+0 FROM tbl_name;
如果將一個數字存儲到一個 ENUM 中,數字被當作為一個索引值,並且存儲的值是該索引值所對應的枚舉成員。(但是,這在 LOAD DATA 將不能工作,因為它視所有的輸入均為字符串。) 在一個 ENUM 字符串中存儲數字是不明智的,因為它可能會打亂思維。
ENUM 值依照列規格說明中的列表順序進行排序。(換句話說,ENUM 值依照它們的索引號排序。)舉例來說,對於 ENUM("a", "b") "a" 排在 "b" 後,但是對於 ENUM("b", "a") , "b" 卻排在 "a" 之前。空字符串排在非空字符串前,NULL 值排在其它所有的枚舉值前。為了防止意想不到的結果,建議依照字母的順序定義 ENUM 列表。也可以通過使用 GROUP BY CONCAT(col) 來確定該以字母順序排序而不是以索引值。
如果希望得到一個 ENUM 列的所有可能值,可以使用 SHOW COLUMNS FROM table_name LIKE enum_colum