基于mysql 默認(rèn)排序規(guī)則的坑
mysql默認(rèn)varchar類型是對(duì)大小寫不敏感(不區(qū)分),如果想要mysql區(qū)分大小寫需要設(shè)置排序規(guī)則:
utf8_bin將字符串中的每一個(gè)字符用二進(jìn)制數(shù)據(jù)存儲(chǔ),區(qū)分大小寫。
utf8_genera_ci不區(qū)分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。
utf8_general_cs區(qū)分大小寫,cs為case sensitive的縮寫,即大小寫敏感。
用utf8_genera_ci沒有區(qū)分大小寫,導(dǎo)致這個(gè)字段的內(nèi)容區(qū)分大小寫時(shí)出問題,比如作為區(qū)分大小寫的code或者驗(yàn)證碼時(shí)就出問題了。
utf8_general_cs這個(gè)選項(xiàng)一般沒有,所以只能用utf8_bin區(qū)分大小寫。
1)設(shè)置排序規(guī)則是可逆的,如果之前設(shè)置的排序規(guī)則不符合,更換排序規(guī)則后,可能出現(xiàn)亂碼,當(dāng)再次恢復(fù)原來的排序規(guī)則后,亂碼即消失。
2)可以將varchar 類型改為 varbinary
3)如果已經(jīng)使用了默認(rèn)的排序規(guī)則,即utf8_genera_ci,而又想查詢結(jié)果大小寫區(qū)分,可以在查詢時(shí)進(jìn)行限定:
select binary column from table;
或者
select column2 from table where binary cloumn;
補(bǔ)充:mysql中的字符集和排序規(guī)則
字符集:
字符是各種文字和符號(hào)的總稱,字符集就是字符的集合。常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。
計(jì)算機(jī)要識(shí)別各種字符集文字,就需要字符編碼。所以有些字符集一個(gè)字符是2個(gè)字節(jié),有些字符集一個(gè)字符是3個(gè)字節(jié)。
排序規(guī)則:舉例
utf_bin和utf_general_ci這兩者到底有什么區(qū)別。
ci是case insensitive, 即"大小寫不敏感",a 和 A 會(huì)在字符判斷中會(huì)被當(dāng)做一樣的;
bin是二進(jìn)制, a 和A 會(huì)別區(qū)別對(duì)待.
utf8_general_ci不區(qū)分大小寫,這個(gè)你在注冊(cè)用戶名和郵箱的時(shí)候就要使用。
utf8_general_cs區(qū)分大小寫,如果用戶名和郵箱用這個(gè) 就會(huì)照成不良后果
utf8_bin:字符串每個(gè)字符串用二進(jìn)制數(shù)據(jù)編譯存儲(chǔ)。區(qū)分大小寫,而且可以存二進(jìn)制的內(nèi)容
所以排序規(guī)則主要說明了是否大小寫敏感和存儲(chǔ)方式。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
MySQL中count(*)、count(1)和count(col)的區(qū)別匯總
count()函數(shù)是用來統(tǒng)計(jì)表中記錄的一個(gè)函數(shù),返回匹配條件的行數(shù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中count(*)、count(1)和count(col)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-03-03Ubuntu下mysql與mysql workbench安裝教程
這篇文章主要為大家詳細(xì)介紹了Ubuntu下mysql與mysql workbench的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04MySQL+Redis緩存+Gearman共同構(gòu)建數(shù)據(jù)庫緩存的方法
這篇文章主要介紹了MySQL+Redis緩存+Gearman共同構(gòu)建數(shù)據(jù)庫緩存,部署后在MySQL端進(jìn)行創(chuàng)建一個(gè)用戶給與遠(yuǎn)程登錄權(quán)限,使得Redis作為緩存可以用來同步數(shù)據(jù)使用,需要的朋友可以參考下2022-10-10深入理解MySQL5.7數(shù)據(jù)目錄結(jié)構(gòu)
本文主要簡(jiǎn)單介紹一下MySQL數(shù)據(jù)文件目錄的物理結(jié)構(gòu)和作用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08一步步教你如何使用mysql?binlog恢復(fù)數(shù)據(jù)
Binlog日志即binary?log,是二進(jìn)制日志文件,有兩個(gè)作用,一個(gè)是增量備份,另一個(gè)是主從復(fù)制,下面這篇文章主要給大家介紹了關(guān)于如何使用mysql?binlog?恢復(fù)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2023-04-04