您的位置:首页 > 博客中心 > 数据库 >

MySQL查询大小写是否敏感问题分析

时间:2022-03-10 17:57

mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。

 1. 什么是字符集和校验规则?

字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则。要想列出一个字符集的校对规则,使用SHOW COLLATION语句。

gxlsystem.com,gxl网

 

校对规则一般有这些特征:

  • 两个不同的字符集不能有相同的校对规则。
  • 每个字符集有一个默认校对规则。例如,utf8默认校对规则是utf8_general_ci。
  • 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。

2. 不同级别的字符集和校验规则可控制大小写敏感

MySQL5.1在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合定义字符串。字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。

2.1服务器级

MySQL按照如下方法确定服务器字符集和服务器校对规则:

(1)修改配置文件/etc/my.cnf

在[mysqld]下添加:collation_server = utf8_bin

重启实例

gxlsystem.com,gxl网

更改服务器级的校验规则(collation_server )后,数据库校验规则(collation_collation)默认会继承服务器级的。

gxlsystem.com,gxl网

可见,my.cnf配置文件中不支持设置collation_database 变量。

(2)创建数据库时设置数据库校验规则

gxlsystem.com,gxl网

 

参考链接:

MySQL5.1参考手册 http://dev.mysql.com/doc/refman/5.1/en/charset-server.html

 

 

 

 

MySQL查询大小写是否敏感问题分析,gxlsystem

热门排行

今日推荐

热门手游