详解MYSQL中COLLATE的作用及各种COLLATE区别

文 / @WordPress主题

在MySQL中,COLLATE关键字用于指示MySQL如何对字符类型的列进行排序和比较。COLLATE的设置不仅会影响ORDER BY语句的顺序,还会影响WHERE条件中大于和小于号等条件筛选的结果,以及DISTINCT、GROUP BY、HAVING等语句的查询结果。此外,如果索引列是字符类型,在MySQL建立索引时也会受到COLLATE的影响。

每个CHARSET都有多个支持的COLLATE,且每个CHARSET都有一种默认的COLLATE。对于Latin1编码,默认的COLLATE为latin1_swedish_ci,对于GBK编码,默认的COLLATE为gbk_chinese_ci,对于utf8mb4编码,默认的COLLATE为utf8mb4_general_ci。

值得注意的是,从MySQL 8.0开始,默认的CHARSET已经不再是Latin1了,而改为了utf8mb4,且默认的COLLATE也改为了utf8mb4_0900_ai_ci。不少人推荐使用utf8mb4_unicode_ci,但是对于已经使用了utf8mb4_general_ci的系统,并没有必要进行修改。

在MySQL中,COLLATE可以在实例级、库级、表级、列级和SQL语句中指定设置。此外,在SQL查询时,可以明确指定COLLATE,以覆盖任何库、表和列的COLLATE设置。

在系统设计中,应尽量避免让系统严重依赖中文字段的排序结果。在MySQL的查询中,也应该尽量避免使用中文作为查询条件。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。