156-0102-3311
联系QQ 284710375
首页 > 技术分享 > MySQL
收藏

mysql区不区分大小的相关问题2023-03-22 17:24:19

大潇博客 原创文章,转载请标明出处

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”,再次导入,此方法经测试有效。


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311