今天遇到乙個情況, 查詢資料時查詢條件輸入不管大小寫,都能查到同樣的資料。 比如: 輸入 aaa 或者aaa ,aaa都能查詢同樣的結果,說明查詢條件是大小寫不敏感的。
因為程式使用了hibernate框架訪問mysql資料庫。 一開始以為是hibernate的問題。 最跟蹤了一下hibernate**沒有看到轉換大小寫的步驟,最後確認hibernate其實只不過是將hql轉化為sql。大小寫不敏感和 hibernate沒有關係。
於是懷疑mysql的問題。做個實驗:直接使用客戶端用sql查詢資料庫。 發現的確是大小不敏感 。
通過查詢資料發現需要設定collate(校對) 。 collate規則:
*_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的
*_cs: case sensitive collation,區分大小寫
*_ci: case insensitive collation,不區分大小寫
www.2cto.com
解決方法。
1.可以將查詢條件用binary()括起來。 比如: select * from tablea where columna like binary('aaa');
2. 可以修改該字段的collation 為 binary
比如:alter table tablename modify column columnname varchar(50) binary character set utf8 collate utf8_bin default null;
問題解決。
作者 向滔
解決MySQL查詢不區分大小寫
今天遇到乙個情況,查詢資料時查詢條件輸入不管大小寫,都能查到同樣的資料。比如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件是大小寫不敏感的。因為程式使用了hibernate框架訪問mysql 資料庫。一開始以為是hibernate的問題。最跟蹤了一下hibernate 沒有看到轉...
解決MySQl查詢不區分大小寫
最近,在用ssh框架完成乙個實踐專案時,碰到了乙個莫名其妙的bug困擾了我好久,最後終於解決,記錄如下。問題 同學在測試系統的時候突然發現,資料庫儲存的賬戶本來應該是admin,結果該同學用admin賬戶居然登入成功了 exm?這樣也行?好吧,我還是查詢這個bug發生的原因吧。然後就是各種排查程式的...
mysql查詢不區分大小寫
摘自 當我們輸入不管大小寫都能查詢到資料,例如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一 於是懷疑mysql的問題。做個實驗 直接使用客戶端用sql查詢資料庫。發現的確是大小不敏感 通過查詢資料發現需要設定collate 校對 collate規則 b...