mysql查詢不區分大小寫解決方案(兩種)

2021-09-27 03:59:26 字數 1338 閱讀 6597

當我們輸入不管大小寫都能查詢到資料,例如:輸入 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 沒有看到轉換...