mysql 查询时没有对字符串区分大小写处理方法

原因分析:

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';

 

 

上一篇:一站式Kafka平台解决方案——KafkaCenter


下一篇:MySQL必知必会——第27章 全球化和本地化 读书笔记