• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基础知识收录(3)MYSQL大小写敏感_mysql

mysql 搞代码 7年前 (2018-06-07) 231次浏览 已收录 0个评论

基础知识收录(三)mysql大小写敏感
  今天游戏开发的时候,就判断玩家是否重名,发现了以前一直都没注意到的mysql大小写敏感
的问题
  例子如下:
  role_base表 `role_id`int(11), `role_name`varchar(32) 字符集:utf-8 校检规则utf8_general_ci
  select * from role_base where role_name=’BBc’
  select * from role_base where role_name=’bbc’
  以上两条select语句结果都是一样

知识要点
  字符集和校检规则
  在windows下用SQLyog,navicat等数据库管理工具,在创建表的时候,都会选项要求选择字符集和校检规则

  字符集是一套符号和编码。有utf8 latin等
基础知识收录(3)MYSQL大小写敏感_mysql

  校检规则(下图中的核对)是在对应的字符集内比较字符的一套规则。_ci(大小写不敏感)
_cs(大小写敏感)_bin(二元)
基础知识收录(3)MYSQL大小写敏感_mysql
 
  一般情况下,sql的大小写敏感可分为如下几个级别
  1:数据库:也就是数据库名,大小写敏感 参数lower_case_table_names控制
  2:表:    表名,大小写敏感 参数lower_case_table_names控制(0敏感1不敏感)
             在linux下 show variables like ‘%case%’查看
  3:列名:  一般是不敏感(不过应该没人会设同样的字段名吧 基础知识收录(3)MYSQL大小写敏感_mysql
  4:字段内容:如果校检规则是_ci结束的大小写不敏感 _cs结束的大小写敏感

如果数据表的字符集为utf-8,校检规则为utf8_general_ci 那么role_name怎么修改为大小写敏感呢?

方法:
  ALTER TABLE role_base MODIFY COLUMN `role_name` varchar(32) BINARY NOT NULL;
utf-8中貌似是没_cs的校检规则,可以用utf8_bin二进制来进行比较
  修改后,其实可以看到role_name的属性为
  `role_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,

欢迎大家阅读《基础知识收录(3)MYSQL大小写敏感_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基础知识收录(3)MYSQL大小写敏感_mysql
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址