MySQL区不区分大小写,取决于创建数据库时选择的字符集编码方式,主要有 _bin、_ci、_cs 三种
比如mysql中 utf8_bin 、utf8_general_ci 、utf8_general_cs 的区别
已有数据的解决方法:
MySQL字符串类型:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET
重点说 BINARY、VARBINARY:
它们存储的不是字符字符串,而是二进制串。所以它们没有字符集,并且排序和比较基于列值字节的数值值
所以对于不区分大小写的字段,查询时想区分大小写,在field_name 前添加 binary 关键字即可
SELECT * FROM table_name WHERE binary field_name LIKE 'a%';
还有一种情况,比如已经创建的表,使用了区分大小写的“utf8_bin”,通过更换表或某个字段为“utf8_general_ci”,并不能有效的使查询不区分大小写
若表的数据量方便导出导入,推荐把数据库或数据表导出,在编辑器中统一将“utf8_bin”更换为“utf8_general_ci”,再次导入,此方法经测试有效。
其它:
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。