Mysql的數據存儲不區分大小寫

目錄

1 Mysql存儲不區分大小寫帶來的影響舉例

2 解決方案

2.1 建表時區分大小寫

2.1 建完表後,ALTER修改表字段區分大小寫


1 Mysql存儲不區分大小寫帶來的影響舉例

1)hive裏存儲的字段是區分大小寫的

 

2)mysql裏存儲,默認是不區分大小寫的

 

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.具體執行過程與反饋

 

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.具體執行過程與反饋

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

修改完以後,對id的大小寫已經有區分了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章