天天看點

Mysql區分某個字段大小寫解決方案

今天生産環境mysql遇到了一個問題,某個應用在生産環境中是區分大寫的,但是mysql中是不區分大小寫的,這就坑爹了,查出來的資料有兩條,程式就報錯了說它不知所措了,咋辦。。。咋辦。。。百度後查到了解決辦法,如下:

mysql預設是區分大小寫的,如果做過某些配置,那麼就不區分大小了,可以通過show Variables like '%table_names'檢視lower_case_table_names的值,0代表區分,1代表不區分。

Linux下的MYSQL預設是要區分表名大小寫的 ,而在windows下表名不區分大小寫讓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區分大小寫

  解決方案一:

    打開設計表後:我們會看到如下選項:

<a href="https://s1.51cto.com/wyfs02/M02/8F/3E/wKioL1jYs0vyuBR2AAA-NqN-mKA340.png" target="_blank"></a>

utf8_general_ci:不區分大小寫

utf8_bin:區分大小寫

 But:使用上面的解決方法并不好如果是這樣的話,可能會波及到其它表或字段等一些想象不到的問題,故而有了下面的解決方法,解決方案二:

 查詢的時候在where後面加一個關鍵字BINARY,那麼後面的關系就是以二進制的方式進行查找了

 SELECT * FROM TAB_NAME WHERE BINARY url = ''; 

本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1910722,如需轉載請自行聯系原作者