mysql 不區分大小寫問題

2021-07-22 19:53:25 字數 1064 閱讀 7228

1. mysql 的預設規定

1.1 mysql在linux下資料庫名、表名、列名、別名大小寫規則是這樣的:

1、資料庫名與表名是嚴格區分大小寫的;

2、表的別名是嚴格區分大小寫的;

3、列名與列的別名在所有的情況下均是忽略大小寫的;

4、變數名也是嚴格區分大小寫的;

1.2 mysql在windows下都不區分大小寫。

2. 解決方法

2.1 改變表結構

alter table `tablename` modify column `cloname` varchar(45) binary;

2.2 強制型別轉換 使用binary關鍵字

在字段或值前使用binary關鍵字

eg:select  * from  table_name where  binary  a like  'a%'eg:select  * from  table_name where  a like  binary 'a%'

3. 注意事項

3.1 binary 不支援索引,查詢效率底下,不建議考慮。上面這些sql語句乍看不會有什麼問題,但是當表中的資料多了以後,問題就會凸顯出來,用不到索引,就會導致查詢效率非常低下。

eg:select * from `tablename` where ( binary weixin = 'value' ) limit 1;

3.2 替代方案 支援索引,查詢效率高

eg: select * from `tablename` where weixin = 'value' collate utf8_bin limit 1;

4. mysql字符集介紹

utf8_general_ci --不區分大小寫

utf8_bin--區分大小寫

*_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的 

*_cs: case sensitive collation,區分大小寫 

*_ci: case insensitive collation,不區分大小寫

MySQL查詢不區分大小寫問題

問題描述 找出使用者名稱id為 aamkadexm2m5njq2lwuzyzc fkmc1h 的使用者的資料 select from usertable where id aamkadexm2m5njq2lwuzyzc fkmc1h 結果出現兩條記錄。這就奇怪了,id已經設定為主鍵,怎麼會重複呢?難...

mysql查詢不區分大小寫

摘自 當我們輸入不管大小寫都能查詢到資料,例如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一 於是懷疑mysql的問題。做個實驗 直接使用客戶端用sql查詢資料庫。發現的確是大小不敏感 通過查詢資料發現需要設定collate 校對 collate規則 b...

MySQL查詢不區分大小寫

springboot mybatis plus獲取資料時,發現mysql竟然沒有區分大小寫都能識別出來,具體的sql如下 select from user where username mysql預設的字元檢索策略 utf8 general ci,表示不區分大小寫 utf8 general cs表示...