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』
因為這個問題,我查了許多資料才發現癥結所在,因此記錄一下,希望給您有所借鑑。
望每天進步一點
MySql enum欄位使用問題
今天在對mysql 資料庫一張表進行query操作時遇到乙個問題,原因竟然是因為表中使用了enum欄位,特此記錄之。mysql中使用enum欄位設定欄位的區間範圍,讓資料庫很好地控制欄位的值 但是也有他的弊端,如資料遷移的時候幾乎不可能被其他資料庫所支援以及接下來筆者想要說明的問題。1.首先新建一張...
MySql enum欄位使用問題
1.首先新建一張表,這裡用了兩個enum欄位,flag與flag2 create tablewtest numint 11 default null,stu namevarchar 20 default null,flagenum 0 1 2 3 4 not null,flag2enum 6 7 8...
HSQLDB日期型字段使用注意事項
date型別用於儲存日期 yyyy mm dd time型別用於儲存時間 hh mm ss datetime或timestamp用於儲存日期和時間。不能用錯了。有些資料庫time型別可以存date,但是hsqldb不行。可以給datatime型別乙個預設值 sql create cached tab...