springboot+mybatis plus獲取資料時,發現mysql竟然沒有區分大小寫都能識別出來,具體的sql
如下:
select
*from
user
where username =
#
mysql預設的字元檢索策略:utf8_general_ci
,表示不區分大小寫;utf8_general_cs
表示區分大小寫,utf8_bin
表示二進位制比較,同樣也區分大小寫 。(注意:在mysql5.6.10版本中,不支援utf8_genral_cs
)
1、建立表時,直接設定表的collate屬性為utf8_general_cs或者utf8_bin
create
table
user
(id int
primary
key,
username varchar
(255
)not
null
)engine
=innodb
collate
=utf8_bin;
2、如果已經建立表,則直接修改欄位的collation屬性為utf8_general_cs或者utf8_bin。
alter
table
user
modify
column username varchar
(255
)binary
character
set utf8 collate utf8_bin default
null
;
binary
屬性可以為列分配該列字符集的 校對規則。binary
屬性是指定列字符集的二元 校對規則的簡寫。排序和比較基於數值字元值。因此也就自然區分了大小寫。
-- 在每乙個條件前加上binary關鍵字
select
*from
user
where
binary username =
#;-- 將引數以binary('')包圍
select
*from
user
where username like
binary
('#'
);
mysql查詢不區分大小寫
摘自 當我們輸入不管大小寫都能查詢到資料,例如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一 於是懷疑mysql的問題。做個實驗 直接使用客戶端用sql查詢資料庫。發現的確是大小不敏感 通過查詢資料發現需要設定collate 校對 collate規則 b...
mysql查詢大小寫 mysql查詢不區分大小寫
摘自 當我們輸入不管大小寫都能查詢到資料,例如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一 於是懷疑mysql的問題。做個實驗 直接使用客戶端用sql查詢資料庫。發現的確是大小不敏感 通過查詢資料發現需要設定collate 校對 collate規則 b...
MySQL查詢不區分大小寫問題
問題描述 找出使用者名稱id為 aamkadexm2m5njq2lwuzyzc fkmc1h 的使用者的資料 select from usertable where id aamkadexm2m5njq2lwuzyzc fkmc1h 結果出現兩條記錄。這就奇怪了,id已經設定為主鍵,怎麼會重複呢?難...