隔离霜什么时候擦:Mysql各种字符类型和字符集的特点

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 21:56:53
mysql在建表的时候可以指定字符集和校对规则。校对规则有三种形式的结尾,_ci 代表了大小写不敏感,_cs是大小写敏感,_bin是二进制,也是大小写敏感的。默认的校对规则是大小写不敏感的,所以如何我们建了这样一张表:
create table t (n varchar(10)) default charset=latin1;insert into t values('w'), ('W');
然后查询
select * from t where n = 'w';
将会返回两条记录。

如果我们需要大小写敏感的查询,可以临时改变其校对规则:

select * from t where n collate latin1_general_cs = 'w';
这样将只有一条记录返回,但是如果n上有索引,那么索引通常是不能被使用的。

另外mysql中char和varchar末尾的空格会被忽略,

select * from t where n = 'w   ';
同样会返回两条结果,所以如果n上有unique index,那么只有末尾空格数有差别的两条记录会被认为是重复的。 char类型保存的字符串,如果末尾有空格,从数据库中取出时,末尾空格会被去掉。

如果希望比较末尾的空格,需要使用

select * from t where binary n = 'w  ';
同样这种形式也不能用到索引。

如果确实需要区别末尾的空格,可以使用varbinary类型,它是保存二进制的字符串,比较时也使用二进制,没有校对规则。如

alter table t modify n varbinary(10);