大家好,又见面了,我是你们的朋友全栈君。
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关键字,方法有两种:
-
可以将查询条件用binary()括起来。 比如:
select * from Table where binary column =‘aaa’;
-
可以修改该字段的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数据查询问题,请登录本站学习。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105865.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...