mysql 如何解决字段不区分大小写的问题

1、mysql默认情况下是否区分大小写,使用show Variables like '%table_names’查看lower_case_table_names的值;

show Variables like ‘%lower_case_table_names’
0代表区分,1代表不区分。

2,LINUX下的MYSQL默认是要区分表名大小写的 ,而在windows下表名不区分大小写

(1). 用ROOT登录,修改/etc/my.cnf

(2) 在[mysqld]下加入一行:lower_case_table_names=1

3.通过查询资料发现需要设置collate(校对) 。

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

设置字符集:
utf8_general_ci --不区分大小写

utf8_bin–区分大小写

6,可以通过binary关键字,方法有两种:
  1. 可以将查询条件用binary()括起来。 比如:

    select * from Table where binary column =‘aaa’;

  2. 可以修改该字段的collation 为 binary
    比如:

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

3,在建表时加以标识:

create table `usertable`( 
 `id` varchar(32) binary, 
 PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
CREATE TABLE `usertable` ( 
 `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', 
 PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

原理:
对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的 校对规则。
BINARY属性是指定列字符集的二元 校对规则的简写。
排序和比较基于数值字符值。因此也就自然区分了大小写。
以上通过两种方案解决了MySql查询不区分大小写的问题,希望对大家有所帮助,更多有mysql数据查询问题,请登录本站学习。

原文链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值