enum的字段,在插入的時候,必須帶上引號。否則會出現不可預期的問題
ENUM枚舉
一般不建議使用,后期不便於擴展。任何不在枚舉的范圍的值插入都會報錯,一般用tinyint替代ENUM比較合適。
ENUM的字段值不區分大小寫。如insert into tb1 values("M"); 和insert into tb1 values("m");效果一樣的。
補充:
enum的存儲原理:
(http://justwinit.cn/post/7354/?utm_source=tuicool&utm_medium=referral)
在建立enum類型的字段時,我們會給他規定一個范圍比如 enum('a','b','c'),這時mysql內部會建立一張hash結構的map表,類似:0000 -> a,0001 -> b,0002 -> c。
當我插入一條數據,此字段的值位a或b或c時,他存儲在里面的不是這個字符,而是對應他的索引,也就是那個0000或0001或0002。
同樣,enum在mysql手冊上的說明:
ENUM('value1','value2',...)
1或2個字節,取決於枚舉值的個數(最多65,535個值)
除非enum的個數超過了一定數量,否則他所占的存儲空間也總是1字節。
轉載自https://blog.csdn.net/weixin_34234721/article/details/89837410