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 = '系统用户';	
    

    也可以加载字段属性上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值