MySql 的大小写敏感问题

最近在工作中遇到了mySql的大小写敏感问题

首先查看DB环境变量

show variables like 'lower%'

执行结果:在这里插入图片描述

lower_case_file_system:OFF表示大小写敏感,ON表示大小写不敏感。
lower_case_table_names:0表示敏感,1表示不敏感。

字段内容大小写敏感问题:

  • 建表时对字段使用binary,二进制大小写是敏感的

    CREATE TABLE sys_user
    (
        id             bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '主键',
        username       varchar(64) binary NOT NULL COMMENT '用户名',
        PRIMARY KEY (id)
    ) COMMENT = '系统用户';
    
  • 在查询条件的字段前加binary,但是不建议这么做,因为会使字段索引失效

    SELECT username FROM sys_user WHERE binary username = 'admin';
    
  • 建表时设置校对规则collate
    collate规则:
       *_bin: 表示的是binary case sensitive collation - 区分大小写
       *_ci: case insensitive collation - 不区分大小写

    加在表属性上:

    CREATE TABLE sys_user
    (
        id             bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '主键',
        username       varchar(64)  NOT NULL COMMENT '用户名',
        PRIMARY KEY (id)
    )CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '系统用户';	
    

    也可以加载字段属性上

猜你喜欢

转载自blog.csdn.net/bluerebel/article/details/110202037