mysql 对字段内容区分大小写的设置
2013-12-15 01:44
393 查看
最近在使用mysql,发现在查询的时候不区分大小写
即 select * from user where username like '%ab%';
select * from user where username like '%Ab%';
select * from user where username like '%aB%';
这三条语句查询出来的结果是一样的,然后查看了下帮助文档,发现这跟mysql字符集对应的默认的校对规则有关。
用 select collation; 可以查看校对规则,collation 以 "_ci"结尾的不区分大小写,以"_bin"或者"_cs"结尾的区分大小写。
用 select charset; 可以查看字符集以及字符集对应的默认校对规则(default collation);
发现大部分的字符集对应的默认校对规则都是不区分大小写的,只有极少数的几个字符集对应的默认校对规则是区分大小写的。
我用的是uft8,可以用 select collation like '%utf%'; 查看utf8对应的校对规则发现有一个校对规则"utf8_bin"是不区分大小写
已经建好的表可以用alter修改表结构指定某一列的校对规则:
alter table table_name modify column column_name varchar(20) character set utf8 collate utf8_bin;
或者创建表的时候也可以指定某一列的校对规则:
create table table_name
(
column_name varchar(20) character set character_name collate collation_name
);
如果指定了character set character_name和collate collation_name,就采用character set character_name和collate collation_name。
如果指定了character set character_name而没有指定collate collation,那么就采用character set character_name和character set character_name的默认校对规则。
character set 和 collate 子句是标准的SQL。
最后说明下我用的操作系统是window XP,mysql 版本为5.0
即 select * from user where username like '%ab%';
select * from user where username like '%Ab%';
select * from user where username like '%aB%';
这三条语句查询出来的结果是一样的,然后查看了下帮助文档,发现这跟mysql字符集对应的默认的校对规则有关。
用 select collation; 可以查看校对规则,collation 以 "_ci"结尾的不区分大小写,以"_bin"或者"_cs"结尾的区分大小写。
用 select charset; 可以查看字符集以及字符集对应的默认校对规则(default collation);
发现大部分的字符集对应的默认校对规则都是不区分大小写的,只有极少数的几个字符集对应的默认校对规则是区分大小写的。
我用的是uft8,可以用 select collation like '%utf%'; 查看utf8对应的校对规则发现有一个校对规则"utf8_bin"是不区分大小写
已经建好的表可以用alter修改表结构指定某一列的校对规则:
alter table table_name modify column column_name varchar(20) character set utf8 collate utf8_bin;
或者创建表的时候也可以指定某一列的校对规则:
create table table_name
(
column_name varchar(20) character set character_name collate collation_name
);
如果指定了character set character_name和collate collation_name,就采用character set character_name和collate collation_name。
如果指定了character set character_name而没有指定collate collation,那么就采用character set character_name和character set character_name的默认校对规则。
character set 和 collate 子句是标准的SQL。
最后说明下我用的操作系统是window XP,mysql 版本为5.0
相关文章推荐
- [乐意黎原创]Mysql 查询字段时强制区分大小写及在某字段左或右边增加内容
- MySQL数据表中内容大小写区分的设置
- MySQL 字段内容区分大小写
- MySQL数据表中内容大小写区分的设置
- MySql 设置字段值区分大小写
- MySQL数据表中内容大小写区分的设置
- MySQL数据表中内容大小写区分的设置
- mysql 设置字段区分大小写
- MySQL数据表中内容大小写区分的设置
- MySQL数据表中内容大小写区分的设置
- LINUX下mysql的大小写是否区分设置
- ubuntu中设置mysql5.7.17不区分大小写
- linux下mysql大小写区分设置
- Linux下 设置Mysql表名不区分大小写
- 在mysql中设置utf8_bin下 like搜索 不想区分大小写
- MySQL表名不区分大小写的设置方法
- mysql设置不区分大小写
- mysql 存储内容区分大小写
- MySql 设置表名不区分大小写
- 阿里云 RDS下 mysql 查询字段 灵活区分大小写