美文网首页
mysql字符串区分大小写的问题

mysql字符串区分大小写的问题

作者: 燃灯道童 | 来源:发表于2021-01-25 14:12 被阅读0次

背景:最近有个需求,需要根据品牌名(varchar)去重数据。去重后发现数据有丢失。
问题:MySql中字符串大小写默认不区分。

整个例子实验一下。像平常一样建一张表,插入两条数据。

##创建一张表,插入两条数据,一个首字母大写,一个全部是小写。
CREATE TABLE NAME(name VARCHAR(10));
insert into NAME VALUES('linghu');
insert into NAME VALUES('LingHu');

执行如下脚本,查询出来两条数据,确实是不区分大小写的。

平常查询结果.png
解决方案:
1.查询条件前添加binary字段;
select * from name where binary name = 'linghu';
加binary后的查询结果.png

2.设置字符集和排序方式;

设置过程.png
设置后再进行查询,指定小写只能查询出来小写的一条字段。
查询结果.png

3.创建表的时候指定binary类型,或者更改字段类型;

###建表时用Binary标示敏感的属性
CREATE TABLE NAME(
name VARCHAR(10) BINARY
);

##或者更改原有字段属性,指定字符集和排序规则。
ALTER TABLE NAME MODIFY COLUMN name VARCHAR(10) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

4.在MySQL的配置文件my.ini中增加一行:lower_case_table_names = 0;
其中 0:区分大小写,1:不区分大小写。(这种方法我并没有尝试。)

相关文章

网友评论

      本文标题:mysql字符串区分大小写的问题

      本文链接:https://www.haomeiwen.com/subject/dtmbzktx.html