mysql 不區分大小寫問題


1. mysql 的默認規定
1.1 MySQL在Linux下數據庫名、表名、列名、別名大小寫規則是這樣的:
   1、數據庫名與表名是嚴格區分大小寫的;
   2、表的別名是嚴格區分大小寫的;
   3、列名與列的別名在所有的情況下均是忽略大小寫的;
   4、變量名也是嚴格區分大小寫的;
1.2 MySQL在Windows下都不區分大小寫。
2. 解決方法
2.1 改變表結構
ALTER TABLE `tablename` MODIFY <a target=_blank target="_blank" href="https://www.baidu.com/s?wd=COLUMN&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4m1wbPH0znW64PyPhrjn10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWcvP1nYnjmsP16vPjTYnW0zr0" class="baidu-highlight" rel="nofollow" style="color:rgb(45,100,179); text-decoration:none">COLUMN</a> `cloname` <a target=_blank target="_blank" href="https://www.baidu.com/s?wd=VARCHAR&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4m1wbPH0znW64PyPhrjn10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWcvP1nYnjmsP16vPjTYnW0zr0" class="baidu-highlight" rel="nofollow" style="color:rgb(45,100,179); text-decoration:none">VARCHAR</a>(45) <a target=_blank target="_blank" href="https://www.baidu.com/s?wd=BINARY&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4m1wbPH0znW64PyPhrjn10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWcvP1nYnjmsP16vPjTYnW0zr0" class="baidu-highlight" rel="nofollow" style="color:rgb(45,100,179); text-decoration:none">BINARY</a>;
2.2 強制類型轉換 使用binary關鍵字
在字段或值前使用binary關鍵字
eg:select  * from  table_name where  binary  a like  'a%' <pre name="code" id="best-content-1876058963" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,'courier new',courier,宋體,monospace,'Microsoft YaHei'; white-space:pre-wrap; word-wrap:break-word; font-size:14px; color:rgb(51,51,51); line-height:24px; background-color:rgb(243,255,236)"> eg:select  * from  table_name where  a like  binary 'a%'
3. 注意事項
3.1 binary 不支持索引,查詢效率底下,不建議考慮。上面這些sql語句乍看不會有什么問題,但是當表中的數據多了以后,問題就會凸顯出來,用不到索引,就會導致查詢效率非常低下。
eg:SELECT * FROM `tableName` WHERE ( BINARY weixin = 'value' ) LIMIT 1; 3.2 替代方案 支持索引,查詢效率高eg: SELECT * FROM `tableName` WHERE weixin = 'value' COLLATE utf8_bin LIMIT 1;4. mysql字符集介紹

utf8_general_ci --不區分大小寫

utf8_bin--區分大小寫

*_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的 
*_cs: case sensitive collation,區分大小寫 
*_ci: case insensitive collation,不區分大小寫

 

 


                        
                        
                 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com