默認狀況下對mysql數據庫中的字段(char, varchar)進行檢索(where)或者排序(order)時都是不區分大小寫的。
在不少應用編程中,會有區分大小寫的需求,這能夠經過在mysql中建表時用binary屬性事先定義來實現(原則上推薦使用該方法)
例如:
create table binary_column
colum01 varchar(15) binary primary key,
colum02 char(15) binary
);
create table binary_column
colum01 varchar(15) binary primary key,
colum02 char(15) binary
);
對於已經存在的表則須要利用alter命令修改表定義
alter table binary_column modify colum02 char(15) binary;
可是對被定義成主鍵的字段進行修改時,須要先取消主鍵定義,而後修改其爲binary屬性,主鍵屬性;
alter table binary_column drop primary key;
alter table binary_column modify colum01 varchar(15) binary primary key, key;
另外也能夠在發行查詢語句時,能夠使用binary命令強制進行區分大小寫的,(不過程序員容易忘記遺漏)
select * from binary_column where colum02 = binary 'AbCdE';
select * from binary_column where binary colum02 = 'AbCdE';
還有測試過幾組數據,這二者的執行速度(explain),前者要快,理由還不得而知,有哪位同窗知道,還請告知。是否是由於前者就執行了一次binary 後者需執行屢次?html
轉自http://blog.sina.com.cn/s/blog_7f2122c501011ezh.htmlmysql