Mysql enum字段使用注意

MySQL enum字段編程“防坑”指南


   MySQL數據庫中的字段類型enum可以是指字段的區間範圍,從而避免向數據庫中插入意想不到的值,
固然這給數據庫設計者來了方便,但容易給編程人員的帶來程序編寫上的bug。因此,程序員需要深
刻了解enum的特徵與特點才能在編程是避免不必要的bug。
   正如我最近在編程時遇到的問題一樣,譬如在表中定義了這樣的一個字段

 type   | enum('0','1','2','3','4','5','6','7','8','9','10','100')           | YES  |     | NULL
 用單引號引用起來的是字符串形式的枚舉值,於是很多新手在編程的時候習慣用這樣的語句進
select * from table_name where type='100'

行查詢
select * from table_name where type=1
select * from table_name where type=1
    結果查詢出來的結果是錯誤的,這是因爲enum 按照從左往右以1爲原始值,逐一遞增的規律標識每
個枚舉值,上面一句查詢語句顯示的結果是type=‘-1’的結果。這樣往往會給編程帶來bug。

    其實,想要查詢type對應的值爲‘-1’的記錄的信息可以這樣查詢
select  * from  table_name where type='0' 
 

    沒錯,在查詢條件匹配時,需要用單引號將匹配的枚舉值引用,這同不用引號而使用枚舉值對應的索是同樣的效果,
但顯然前者更加直觀。
    例如,對以上的type字段作爲條件查詢,有
select * from table_name where type= 12 
 等價於
select * from table_name where type=‘100’
  因爲這個問題,我查了許多資料才發現癥結所在,因此記錄一下,希望給您有所借鑑。
 望每天進步一點再見



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章