排序规则(Collation)是MySQL中定义字符比较和排序的规则,依附于字符集存在,控制大小写、重音敏感性及二进制比较行为,影响ORDER BY、WHERE、GROUP BY等操作,并可在服务器、数据库、表、列等层级设置与查看。

排序规则(Collation)是 MySQL 中用来定义字符如何比较和排序的一套规则,它依附于字符集存在,不单独生效。简单说:字符集决定“能存什么字”,排序规则决定“这些字怎么比、怎么排”。
排序规则的核心行为
它主要控制三类判断逻辑:
-
大小写是否敏感:比如
a和A是否等价。后缀_ci(case-insensitive)表示不区分,_cs(case-sensitive)表示区分; -
重音是否敏感:比如
é和e是否视为相同。后缀_ai(accent-insensitive)忽略重音,_as(accent-sensitive)则区分; -
是否按二进制值比较:后缀
_bin表示直接按字符的字节值排序,最严格,也最高效,但不符合自然语言习惯(如中文拼音顺序、德语变音处理等)。
常见排序规则命名解读
以 utf8mb4_0900_ai_ci 为例:
-
utf8mb4:所属字符集,支持 4 字节 Unicode(含 emoji); -
0900:表示基于 Unicode 9.0 标准的排序权重算法,更准确支持多语言; -
ai:忽略重音(accent-insensitive); -
ci:忽略大小写(case-insensitive)。
对比 utf8mb4_bin:同样用 utf8mb4 字符集,但所有字符都按二进制逐字节比对,A 和 a 一定不等,ñ 和 n 也绝不等同。
Lht蓝海豚(大维)团购导航系统是一套开源程序,采用PHP+MySql平台开发,具有强大的多规则API采集功能、精确化引导消费功能,卓越的负载能力和访问速度,全面支持第三方整合(微博、短信等)前台功能团购名站:显示分类下的所有团购网站,点击团购站,可直接进行查看、推荐、收藏精品商城:为网民推荐展示非团购网站的网上商城今日团购:显示各团购网站正在进行的团购团购排行:今日团购商品可按价格、行业、折扣、
排序规则在哪起作用
它影响所有涉及字符比较或排序的操作,包括:
-
ORDER BY字段排序结果(如中文按拼音?按 Unicode 码点?); -
WHERE中的字符串匹配(name = 'Li'是否匹配'li'); -
GROUP BY和DISTINCT的去重逻辑; - 索引能否用于优化排序(如
ORDER BY last_name能否走INDEX(last_name),取决于该列的 collation 是否与索引一致)。
如何查看和设置排序规则
可查层级包括服务器、数据库、表、列、甚至单个字符串常量:
- 查当前库默认规则:
SELECT @@collation_database; - 查某字符集的所有可用规则:
SHOW COLLATION WHERE Charset = 'utf8mb4'; - 建表时指定列规则:
name VARCHAR(100) COLLATE utf8mb4_unicode_ci; - 查询时临时指定:
SELECT * FROM users ORDER BY name COLLATE utf8mb4_bin;(强制二进制排序)。
注意:下层(如列)会继承上层(如库)的默认规则,但可显式覆盖;不同 collation 混用可能触发隐式转换,影响性能和结果准确性。









