MYSQL中 ENUM 型別的 查詢坑點

2021-09-01 15:57:15 字數 746 閱讀 8014

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...