mysql字段值区分不区分大小写的解决方法

出现问题的原因是我在做项目中测试的时候遇到下列情况:

假如有下面一个person表:

字段有logonName 、password  并且logonName为主键的话,

那么当你执行如下语句:

insert into person(logonName,password) values('A','123456');

正常执行,但是再执行下面语句就出现奇怪的问题了。

insert into person(logonName,password) values('a',123456');  (字段的值居然也不区分大小写,坑爹呀)

 

它报错说主键重复,原因是mysql在window操作系统下对于字段值默认不区分大小写。

解决办法一:更改表结构

alter table person modify logonName varchar(50) binary   (增加binary关键字即可)

 

解决办法二:更改语句

select * from person where logonName = 'tom'  改为 select * from person where logonName regexp binary 'tom'  (把等号换成 regexp binary )

 

第二种方法治标不治本,因为你用hibernate的hql语句的时候,再用办法二是行不通的。所以我用方法一。

 

 

你可能感兴趣的:(mysql,字段值不区分大小写)