Mysql的数据存储不区分大小写

目录

1 Mysql存储不区分大小写带来的影响举例

2 解决方案

2.1 建表时区分大小写

2.1 建完表后,ALTER修改表字段区分大小写


1 Mysql存储不区分大小写带来的影响举例

1)hive里存储的字段是区分大小写的

Mysql的数据存储不区分大小写_第1张图片

 

2)mysql里存储,默认是不区分大小写的

Mysql的数据存储不区分大小写_第2张图片

 

3)当将hive表里存储在hdfs上的数据通过sqoop工具等灌到mysql里的时候就会出问题

Q3WA,Q3Wa,Q3wA,Q3wa会被当做相同的id,灌入mysql的数据只会存在最后一条写入的数据!

2 解决方案

2.1 建表时区分大小写

1)区分大小写的建表方式

 #1.建表以及相关测试语句

CREATE TABLE Test
(
  id   VARCHAR(10) BINARY ,
  name VARCHAR(20) 
);
INSERT INTO Test(id,name) VALUE("a","bob");
UPDATE Test SET name='jackie' WHERE id='a';
UPDATE Test SET name='jack' WHERE id='A';

 #2.具体执行过程与反馈

Mysql的数据存储不区分大小写_第3张图片

 

2)不区分大小写的建表方式

#1.建表以及测试语句

CREATE TABLE Test(id VARCHAR(10), name VARCHAR(20) );
insert into Test(id,name) value ("a","bob");
UPDATE Test set name='jackie' where id='a';
UPDATE Test set name='jake' where id='A';

#2.具体执行过程与反馈

Mysql的数据存储不区分大小写_第4张图片

3)对比结果

区分大小写时,UPDATE Test SET name='jack' WHERE id='A' 不会对 id='a'的记录进行更新;

不区分大小写,UPDATE Test SET name='jack' WHERE id='A' 会对 id='a'的记录进行更新;

2.1 建完表后,ALTER修改表字段区分大小写

#1.修改表结构以及验证语句

ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY; 

ALTER TABLE Test MODIFY COLUMN `id` VARCHAR(10) BINARY;
UPDATE Test set name='bob' where id='a';
UPDATE Test set name='BOB' where id='A';

#2.修改表字段为binary存储 

Mysql的数据存储不区分大小写_第5张图片

修改完以后,对id的大小写已经有区分了。

你可能感兴趣的:(hive,mysql,数据库)