MySQL查詢不區分大小寫問題

2021-06-05 05:45:38 字數 1092 閱讀 4179

問題描述:

找出使用者名稱id為』aamkadexm2m5njq2lwuzyzc***fkmc1h『的使用者的資料: select * from usertable where id = 'aamkadexm2m5njq2lwuzyzc***fkmc1h'; 結果出現兩條記錄。這就奇怪了,id已經設定為主鍵,怎麼會重複呢?難道是mysql的漏洞。後來發現原來查詢出來的兩個id的值是不同的,詐一看沒什麼區別,仔細看你會發現這兩個id只是有乙個字母的大小寫不同, 這兩個id分別為:

'aamkadexm2m5njq2lwuzyzc***fkmc1h',

'aamkadexm2m5njq2lwuzyzc***fkmc1h'.

原來mysql查詢時,存在不區分大小寫的情況。可以通過binary關鍵字加以解決。

解決方法有兩種:

第一種:讓mysql查詢時區分大小寫

select * from usertable wherebinary id = 'aamkadexm2m5njq2lwuzyzc***fkmc1h';

第二種:在建表時加以標識

create table table_name {

id varchar(32) binary;

在mysql中,存在大小寫問題的地方還有:

(1)  關鍵字: 不區分大小寫    select * from table_name 和 select * from table_name 效果是一樣的

(2) 標示符(如資料庫名稱和表名稱):不區分大小寫。如存在表users,那麼select  *  from users和select *  from users 效果一樣。網上說這跟作業系統有關,在所有unit作業系統(除了使用hfs+的mac os 之外)上都是區分大小寫的,而在windows上是不區分大小寫的。(網上的這一說法沒有驗證過,我在windows server2003上是不區分大小寫的)

(3) 表的別名:不區分大小寫  select m.* from users m where m.username = 'aa';

(4) 列的別名:不區分大小寫  select uname from (select username as uname from users where id = 768) t

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表示...

mysql 不區分大小寫問題

1.mysql 的預設規定 1.1 mysql在linux下資料庫名 表名 列名 別名大小寫規則是這樣的 1 資料庫名與表名是嚴格區分大小寫的 2 表的別名是嚴格區分大小寫的 3 列名與列的別名在所有的情況下均是忽略大小寫的 4 變數名也是嚴格區分大小寫的 1.2 mysql在windows下都不區...