標籤:mysql 欄位 大小寫
今天生產環境mysql遇到了一個問題,某個應用在生產環境中是區分大寫的,但是mysql中是不區分大小寫,這就坑爹了,查出來的資料有兩條,程式就報錯了說它不知所措了,咋辦。。。咋辦。。。百度後查到瞭解決辦法,如下:
1.用ROOT登入,修改/etc/my.cnf
2.在[mysqld]下加入一行:lower_case_table_names=1
3.重新啟動資料庫即可
mysql欄位varchar區分大小寫utf8_bin、utf8_general_ci編碼區別
在mysql中存在著各種utf8編碼格式:
utf8_bin將字串中的每一個字元用位元據儲存,區分大小寫。
utf8_genera_ci不區分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。
utf8_general_cs區分大小寫,cs為case sensitive的縮寫,即大小寫敏感。
用utf8_genera_ci沒有區分大小寫,導致這個欄位的內容區分大小寫時出問題,比如作為區分大小寫code或者驗證碼時就出問題了。
utf8_general_cs這個選項一般沒有,所以只能用utf8_bin區分大小寫
解決方案一:
開啟設計表後:我們會看到如下選項:
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/8F/3E/wKioL1jYs0vyuBR2AAA-NqN-mKA340.png" title="QQ圖片20170327143732.png" alt="wKioL1jYs0vyuBR2AAA-NqN-mKA340.png" />
utf8_general_ci:不區分大小寫
utf8_bin:區分大小寫
But:使用上面的解決方案並不好如果是這樣的話,可能會波及到其它表或欄位等一些想象不到的問題,故而有了下面的解決方案,解決方案二:
查詢的時候在where後面加一個關鍵字BINARY,那麼後面的關係就是以二進位的方式進行尋找了
SELECT * FROM TAB_NAME WHERE BINARY url = ‘‘;
本文出自 “學習改變命運” 部落格,請務必保留此出處http://xinsir.blog.51cto.com/5038915/1910722
Mysql區分某個欄位大小寫解決方案