基于mysql 默認排序規(guī)則的坑
mysql默認varchar類型是對大小寫不敏感(不區(qū)分),如果想要mysql區(qū)分大小寫需要設(shè)置排序規(guī)則:
utf8_bin將字符串中的每一個字符用二進制數(shù)據(jù)存儲,區(qū)分大小寫。
utf8_genera_ci不區(qū)分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。
utf8_general_cs區(qū)分大小寫,cs為case sensitive的縮寫,即大小寫敏感。
用utf8_genera_ci沒有區(qū)分大小寫,導(dǎo)致這個字段的內(nèi)容區(qū)分大小寫時出問題,比如作為區(qū)分大小寫的code或者驗證碼時就出問題了。
utf8_general_cs這個選項一般沒有,所以只能用utf8_bin區(qū)分大小寫。
1)設(shè)置排序規(guī)則是可逆的,如果之前設(shè)置的排序規(guī)則不符合,更換排序規(guī)則后,可能出現(xiàn)亂碼,當(dāng)再次恢復(fù)原來的排序規(guī)則后,亂碼即消失。
2)可以將varchar 類型改為 varbinary
3)如果已經(jīng)使用了默認的排序規(guī)則,即utf8_genera_ci,而又想查詢結(jié)果大小寫區(qū)分,可以在查詢時進行限定:
select binary column from table;
或者
select column2 from table where binary cloumn;
補充:mysql中的字符集和排序規(guī)則
字符集:
字符是各種文字和符號的總稱,字符集就是字符的集合。常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。
計算機要識別各種字符集文字,就需要字符編碼。所以有些字符集一個字符是2個字節(jié),有些字符集一個字符是3個字節(jié)。
排序規(guī)則:舉例
utf_bin和utf_general_ci這兩者到底有什么區(qū)別。
ci是case insensitive, 即"大小寫不敏感",a 和 A 會在字符判斷中會被當(dāng)做一樣的;
bin是二進制, a 和A 會別區(qū)別對待.
utf8_general_ci不區(qū)分大小寫,這個你在注冊用戶名和郵箱的時候就要使用。
utf8_general_cs區(qū)分大小寫,如果用戶名和郵箱用這個 就會照成不良后果
utf8_bin:字符串每個字符串用二進制數(shù)據(jù)編譯存儲。區(qū)分大小寫,而且可以存二進制的內(nèi)容
所以排序規(guī)則主要說明了是否大小寫敏感和存儲方式。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
MySQL異?;謴?fù)之無主鍵情況下innodb數(shù)據(jù)恢復(fù)的方法
這篇文章主要介紹了MySQL異常恢復(fù)之無主鍵情況下innodb數(shù)據(jù)恢復(fù)的方法,結(jié)合實例形式分析了針對innodb引擎無主鍵的情況下恢復(fù)數(shù)據(jù)的步驟與相關(guān)技巧,需要的朋友可以參考下2016-04-04
詳解mysql中的concat相關(guān)函數(shù)
這篇文章主要介紹了mysql中的concat相關(guān)函數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11
MySql設(shè)置指定用戶數(shù)據(jù)庫查看查詢權(quán)限
這篇文章主要介紹了MySql設(shè)置指定用戶數(shù)據(jù)庫查看查詢權(quán)限,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
在Windows環(huán)境下使用MySQL:實現(xiàn)自動定時備份
下面小編就為大家分享一篇在Windows環(huán)境下使用MySQL:實現(xiàn)自動定時備份的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

