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

mysql 如何解决字段不区分大小写的问题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数据查询问题,请登录本站学习。

原文链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105865.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号