问题:
在使用字符串字段时作为查询条件 进行精准匹配,发现字符串不区分大小写。
如下 sql
# 结果1
SELECT id,`code` FROM `yh_exchange_code` where code = 'tfUHfk' ;
# 结果2
SELECT id,`code` FROM `yh_exchange_code` where code = 'TFUHFK' ;
会发现两个查询语句 得到结果都是一条数据
原因:
原因是Mysql中“COLLATE”属性区分大小写,而该属性默认值为“utf8_general_ci”,这个值表示是不区分大小写的。现将解决方法记录如下:
解决办法:
1.设置“COLLATE”属性值为“utf8_bin”或者“utf8_gerneral_cs”,utf8_bin表示二进制比较,同时也支持区分大小写;在Mysql5.6.10版本中,不支持utf8_genral_cs;
2.在创建表的时候,指定表字段COLLATE 为utf8_bin或者utf8_general_cs(注意版本),如:
alter table `yh_exchange_code` modify column code varchar(128) COLLATE utf8_bin ;
3.修改字段为BINARY:
alter table `yh_exchange_code` modify column code varchar(128) BINARY;
4.查询语句字段前面加BINARY:
两种写法都可以
1、第一种
SELECT id,`code` FROM `yh_exchange_code` where BINARY code = 'TFUHFK' ;
2、第二种
SELECT id,`code` FROM `yh_exchange_code` where code = BINARY 'tfUHfk' ;
结果
评论 (0)