关于mysql字符集和排序规则
今天写更新操作的时候,发现只是改变了大小写,java
变Java
,无法修改成功,说已存在,试过来试过去,发现不区分大小写,然后去用mysql直接用sql语句查,发现where name="java"
和where name="Java"
都能查到Java
这条数据,然后查了一下,原来建立数据库的时候,排序规则选的是_ci
结尾的, _ci
结尾意思是case insensitive
,大小写不敏感, _cs
结尾的意思是case sensitive
,大小写敏感。
然后发现utf_8 没有_cs,就改成了 _bin
,也能区分大小写了。
修改语句为:
ALTER TABLE `t_tag` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
- utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。
- utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。
- utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。