【MYSQL】mysql中的字符,字符串的大小写问题

默认情况下对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

你可能感兴趣的:(【MYSQL】mysql中的字符,字符串的大小写问题)