mysql區分大小寫的設定

2021-06-14 14:58:34 字數 1558 閱讀 4848

查詢資料時查詢條件輸入不管大小寫,都能查到同樣的資料。 比如: 輸入 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,不區分大小寫

解決方法。

1.可以將查詢條件用binary()括起來。  比如:     select  * from tablea  where  columna like binary('aaa');

2. 可以修改該字段的collation 為 binary

比如:

alter table `tablename` modify column `cloname` varchar(45) binary

alter table tablename modify column columnname varchar(50)binarycharacter set utf8collateutf8_bin default null;

解決該問題

如何不區分大小寫:

mysql預設的設定或是對整個庫的設定

是否區分大小寫和校對規則有關,預設設的規則是大小寫不敏感的。

show create table如果看到collate是ci結尾,那麼就是不區別的,如果cs或bin結尾,就是區別的。

如果建表的時候選擇的是區別大小寫的規則而查詢的時候又暫時不想區別,

可以用類似

where column_name collate utf8_general_ci ,根據使用字符集的不同改變general_ci。

的寫法改變查詢使用的校對規則。

mysql使用like搜尋不區分大小寫方法之一

sql**:

col_namecollate***_general_cs like

'a%'

col_name like

'a%'

collate***_general_cs  

col_namecollate***_bin like

'a%'

col_name like

'a%'

collate***_bin  

使用a搜尋,以a或a開頭的記錄都將返回

MYSQL 區分大小寫

1 linux下mysql安裝完後是預設 區分表名的大小寫,不區分列名的大小寫 2 用root帳號登入後,在 etc my.cnf 中的 mysqld 後新增新增lower case table names 1,重啟mysql服務,這時已設定成功 不區分表名的大小寫 lower case table...

mysql區分大小寫

兩種情況下會區分大小寫,1 建表時,表的編碼是utf8 bin utf8 general ci不會區分大小寫 注意是表編碼不是資料庫編碼。區分大小寫與資料庫編碼無關。2 建表後,可以通過 binary調整。語句如下 alter table wl testdx bin wlt testdx bin m...

mysql 區分大小寫 大小寫敏感 配置

linux下mysql預設區分大小寫 windows下mysql預設不區分大小寫 檢視是否區分大小寫 lower case table names引數詳解 lower case table names 0 其中 0 區分大小寫,1 不區分大小寫 mysql在linux下資料庫名 表名 列名 別名大小...