标签:
默认情况下对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
后者需执行多次?
转自http://blog.sina.com.cn/s/blog_7f2122c501011ezh.html
标签:
原文地址:http://www.cnblogs.com/zhang2015/p/5147252.html