打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mysql查询时不区分大小写
userphoto

2022.09.23 北京

关注

  一次偶然的机会,发现在登陆验证时,改变用户名的大小写,同样可以登录成功,这是由于,当时使用的mysql数据库对大小写不敏感,查询时总是能查询到数据。一番查找资料,给出的原因是:在创建数据库的时候,选择了utf8_general_ci排序规则。

  创建数据库时,需要同时选择字符集和排序规则,字符集大家都知道是怎么回事,那排序规则干嘛用的呢?

  排序规则:是指对指定字符集下不同字符的比较规则。其特征有以下几点:
    1、 两个不同的字符集不能有相同的排序规则
    2、 两个字符集有一个默认的排序规则
    3、 有一些常用的命名规则:如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case sensitive),_bin表示二进制的比较(binary)。

  我用的是5.6版本的mysql,对于这个版本是不支持utf8的cs排序规则,如果要想对大小写敏感,可以使用_bin的排序规则。

  与此同时,可以使用“show COLLATION;”查询当前版本的数据库支持的所有排序规则。使用 “show charset like 'utf8%';”进一步查看当前字符集的默认排序规则是什么。

  对于_ci的规则,表示不区分大小写,如图所示:

  对于使用_bin排序规则的查询如下:

   对于已经创建好的表,可以是用如下命令进行修改(修改表结构的Collation属性):

    ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

    上面着重色部分分别表示表名和列名。

  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MySQL字符集及校对规则的理解
mysql 批量修改表字符集和排序规则
MySQL字符集与排序规则 MySQL DBA学习
不可忽视的MySQL字符集
MySQL数据库修改字符集为utf8mb4
数据库 MySQL基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服