mysql 数据区分大小写_Mysql的数据存储不区分大小写

目录

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

2 解决方案

2.1 建表时区分大小写

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

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

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

f08db6f62730955d29e663263e83484e.png

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

959b80eefdfe89e4db22b72c3adc1e54.png

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.具体执行过程与反馈

895973b43a902ef2b7ccc52eecc34a4c.png

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.具体执行过程与反馈

91aea88d3f216ad50c17d92c4eb578b8.png

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存储

3043fbdef6a06f78e429dea25157226e.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值