create table `address` (
`is_default` enum('0','1') not null default '0' comment '1預設收貨位址',
) engine=innodb auto_increment=8196 default charset=utf8 comment='買家位址資訊表';
查詢條件是enum型別的字段時,如果是想比較emun值就要傳字串,enum型別每個列舉的值都會有個**的索引,如果比較的值是整型將會引用enum索引對應的值,enum的索引以1開始,enum可以模擬成php這樣的索引陣列
[
1 => '0', 列舉值為0
2 => '1', 列舉值為1
]
以上資料表結構為查詢例項:
where is_default = 1 //實際上在查詢時會轉換為where is_default = '0'
where is_default = 2 //實際上在查詢時會轉換為where is_default = '1'
where is_default = '0' //實際上在查詢時會轉換為where is_default = '0'
where is_default = '1' //實際上在查詢時會轉換為where is_default = '1'
聽說enum欄位插入值為整數時薈報錯,有待查證。
參考資料:
mysql中的ENUM型別
enum 是乙個字串物件,其值來自表建立時在列規定中顯式列舉的一列值。在某些情況下,enum 值也可以為空字串 或null 如果你將乙個非法值插入enum 也就是說,允許的值列之外的字串 將插入空字串以作為特殊錯誤值。該字串與 普通 空字串不同,該字串有數值值0 後面有詳細討論。如果將enum 列宣...
mysql中enum型別理解
enum是列舉型別,它雖然只能儲存乙個值,卻能夠處理多達65535個預定義的值。下面是我寫的乙個mysql語句 create table student id int 11 primary key auto increment,name varchar 10 not null,enum boy gi...
mysql中的enum和set型別
mysql中的enum和set其實都是string型別的而且只能在指定的集合裡取值,不同的是set可以取多個值,enum只能取乙個 create table 20121101 t id int 11 not null auto increment,name varchar 20 not null,c...