原因分析:
mysql 查询时没有对字符串区分大小写的原因主要在于创建表时没有指定其校对规则,或者校对规则设置成了不区分大小写。
区分大小写的设置通常是: utf8****_bin ,以 “_bin" 结尾的表示区分大小写,它表示的是:binary case sensitive collation
不区分大小写的设置通常是: ut8***_ci , 以 “_ci" 结尾的表示不区分大小写,它表示的是: case insensitive collation
解决方案:
1. 将需要区分大小写的字段,修改其字符串校验规则:
ALTER TABLE `test`
MODIFY COLUMN `code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '编号' ;
2. 在查询时,在该列名前增加关键字 BINARY 即可,eg: select * from test where binary code = 'abc';
3. 如果整个表中的字段都需要遵循区分大小写,最好的方式是重新建表,将数据备份后,在建表语句后面加入 COLLATE=utf8mb4_bin
4. 为了避免售后建表忘记加校验规则区分大小写,在创建数据库时,就需要指定字符集和字符校验规则:
eg : CREATE DATABASE `Test` CHARACTER SET 'utf8' COLLATE 'ut8_bin';