MYSQL中 ENUM 类型
ENUM類型
ENUM 是一個字符串對象,其值通常選自一個允許值列表中,該列表在表創(chuàng)建時的列規(guī)格說明中被明確地列舉。
在下列某些情況下,值也可以是空串("") 或 NULL:
- 如果將一個無效值插入一個 ENUM (即,一個不在允許值列表中的字符串),空字符串將作為一個特殊的錯誤值被插入。事實(shí)上,這個字符串有別于一個"普通的"空字符串,因?yàn)檫@個字符串有個數(shù)字索引值為 0。稍后有更詳細(xì)描述。
- 如果一個 ENUM 被聲明為 NULL,NULL 也是該列的一個合法值,并且該列的缺省值也將為 NULL 。如果一個 ENUM 被聲明為 NOT NULL,該列的缺省值將是該列表所允許值的第一個成員。
每個枚舉值均有一個索引值:
- 在列說明中列表值所允許的成員值被從 1 開始編號。
- 空字符串錯誤值的索引值為 0。這就意味著,你可以使用下面所示的 SELECT 語句找出被賦于無效 ENUM值的記錄行。 mysql> SELECT * FROM tbl_name WHERE enum_col=0;
- NULL 值的索引值為 NULL。
例如,指定為 ENUM("one", "two", "three") 的一個列,可以有下面所顯示的任一值。每個值的索引值也如下所示:
| 值 | 索引值 |
| NULL | NULL |
| "" | 0 |
| "one" | 1 |
| "two" | 2 |
| "three" | 3 |
換個枚舉最大可以有 65535 個成員值。
從 MySQL 3.23.51 開始,當(dāng)表被創(chuàng)建時,ENUM 值尾部的空格將會自動刪除。
當(dāng)為一個 ENUM 列賦值時,字母的大小寫是無關(guān)緊要的。然而,以后從列中檢索出來的值的大小寫卻是匹配于創(chuàng)建表時所指定的允許值。
如果在一個數(shù)字語境中檢索一個ENUM,列值的索引值將被返回。例如,你可以像這樣使用數(shù)字值檢索一個 ENUM 列:
mysql> SELECT enum_col+0 FROM tbl_name;如果將一個數(shù)字存儲到一個 ENUM 中,數(shù)字被當(dāng)作為一個索引值,并且存儲的值是該索引值所對應(yīng)的枚舉成員。(但是,這在 LOAD DATA 將不能工作,因?yàn)樗曀械妮斎刖鶠樽址? 在一個 ENUM 字符串中存儲數(shù)字是不明智的,因?yàn)樗赡軙騺y思維。
ENUM 值依照列規(guī)格說明中的列表順序進(jìn)行排序。(換句話說,ENUM 值依照它們的索引號排序。)舉例來說,對于 ENUM("a", "b") "a" 排在 "b" 后,但是對于 ENUM("b", "a") , "b" 卻排在 "a" 之前。空字符串排在非空字符串前,NULL 值排在其它所有的枚舉值前。為了防止意想不到的結(jié)果,建議依照字母的順序定義 ENUM 列表。也可以通過使用 GROUP BY CONCAT(col) 來確定該以字母順序排序而不是以索引值。
如果希望得到一個 ENUM 列的所有可能值,可以使用 SHOW COLUMNS FROM table_name LIKE enum_colum
轉(zhuǎn)載于:https://www.cnblogs.com/skillCoding/archive/2012/03/14/2395404.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的MYSQL中 ENUM 类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server 2012中的Con
- 下一篇: Window下启动MariaDB服务启动