當我們輸入不管大小寫都能查詢到資料,例如:輸入 aaa 或者aaa ,aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。
解決方案一:
於是懷疑mysql的問題。做個實驗:直接使用客戶端用sql查詢資料庫。 發現的確是大小不敏感 。
通過查詢資料發現需要設定collate(校對) 。collate規則:
*_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的
*_cs: case sensitive collation,區分大小寫
*_ci: case insensitive collation,不區分大小寫
解決方法。
1.可以將查詢條件用binary()括起來。 比如:
select * from tablea where binary columna ='aaa';
2. 可以修改該字段的collation 為 binary
比如:
alter table tablename modify column columnname varchar(50) binary character set utf8 collate utf8_bin default null;
解決方案二:
mysql查詢預設是不區分大小寫的 如:
select * from some_table where str=『abc';
select * from some_table where str='abc';
得到的結果是一樣的,如果我們需要進行區分的話可以按照如下方法來做:
第一種方法:
要讓mysql查詢區分大小寫,可以:
select * from some_table where binary str='abc'
select * from some_table where binary str='abc'
第二方法:
在建表時時候加以標識
create table some_table(
str char(20) binary
)
原理:
對於char、varchar和text型別,binary屬性可以為列分配該列字符集的 校對規則。binary屬性是指定列字符集的二元 校對規則的簡寫。排序和比較基於數值字元值。因此也就自然區分了大小寫。
解決MySQL查詢不區分大小寫
今天遇到乙個情況,查詢資料時查詢條件輸入不管大小寫,都能查到同樣的資料。比如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件是大小寫不敏感的。因為程式使用了hibernate框架訪問mysql 資料庫。一開始以為是hibernate的問題。最跟蹤了一下hibernate 沒有看到轉...
解決MySQl查詢不區分大小寫
最近,在用ssh框架完成乙個實踐專案時,碰到了乙個莫名其妙的bug困擾了我好久,最後終於解決,記錄如下。問題 同學在測試系統的時候突然發現,資料庫儲存的賬戶本來應該是admin,結果該同學用admin賬戶居然登入成功了 exm?這樣也行?好吧,我還是查詢這個bug發生的原因吧。然後就是各種排查程式的...
解決MySQL查詢不區分大小寫
今天遇到乙個情況,查詢資料時查詢條件輸入不管大小寫,都能查到同樣的資料。比如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件是大小寫不敏感的。因為程式使用了hibernate框架訪問mysql資料庫。一開始以為是hibernate的問題。最跟蹤了一下hibernate 沒有看到轉換...