mysql中 utf8_bin 、utf8_general_ci 、utf8_unicode_ci 的区别
ci即:case insensitive,翻译为中文,即:不区分大小写,这种情况“a”和“A”在字符判断中会被当成是一样的;
bin 是二进制,“a”a和“A”会被区别对待;
utf8_general_ci 不区分大小写,注册用户名和邮箱的时候就要使用;
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果;
utf8_bin 字符串每个字符用二进制数据编译存储。 区分大小写,而且可以存二进制的;
总结:
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
binary类型 (mysql字符串类型中的一种)
BINARY、VARBINARY:它们存储的不是字符字符串,而是二进制串。所以它们没有字符集,并且排序和比较基于列值字节的数值值。
字符串类:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET;
对于不区分大小写的字段查询时想区分大小写
SELECT * FROM table_name WHERE binary field_name LIKE 'a%';
在field_name 前添加 binary 关键字即可;
已经创建的表,使用了区分大小写的“utf8_bin”,通过更换表或某个字段为“utf8_general_ci”,并不能有效的使查询不区分大小写
更好的方法是,把数据库或数据表导出,在编辑器中统一将“utf8_bin”更换为“utf8_general_ci”,再次导入,此方法经测试有效。
上一篇:MySQL查询当前排名
下一篇:Mysql让自增主键从1开始