查询mysql数据库是否忽略大小写,大小写是否敏感

一、数据库层级

1、执行如下语句:

SHOW GLOBAL VARIABLES LIKE '%lower_case%'

lower_case_file_system 为ON表示大小写不敏感,为OFF表示大小写敏感;
lower_case_table_names 为1表示mysql会先把表名转为小写,再执行操作,为0表示mysql会根据表名直接操作(大小写不敏感)。

二、表结构层级(实际会影响到查询结果)

1、排序规则为 utf8_bin、utf8mb4_bin,是用二进制数据编译存储的,所以区分大小写;

     排序规则为 utf8_general_ci、utf8mb4_general_ci,不区分大小写。

2、实际配置如图

三、查询级

collate规则

 *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
 *_cs: case sensitive collation,区分大小写
 *_ci: case insensitive collation,不区分大小写

对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的 校对规则。BINARY属性是指定列字符集的二元 校对规则的简写。排序和比较基于数值字符值。因此也就自然区分了大小写。

区分大小写方案:

1、可以将查询条件用binary()括起来。  比如:  

select * from TableA where binary columnA ='aaa';

2、可以修改该字段的collation 为 binary

ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

在建表时时候加以标识

create table some_table(
   str char(20) binary
)

 

posted @ 2022-07-13 11:14  滔天蟹  阅读(2387)  评论(0)    收藏  举报