中文与自定义排序要点
- 默认按字符集编码排,中文常出现不合直觉的顺序
- 用 COLLATE 指定 zh 类规则可接近拼音序
- 按固定清单排可用 ORDER BY FIELD(列, 值1, 值2...)
- FIELD 把清单里的值排前面,不在清单的排最后
- 中文排序慢于数字,大表要留意性能
- 排序规则也能在建表或字段级提前定好
中文与自定义排序示例
SELECT * FROM product ORDER BY name COLLATE utf8mb4_zh_0900_as_cs;
SELECT * FROM order_status ORDER BY FIELD(status, 'paid', 'shipped', 'done');
避坑提醒:中文字段要『拼音序』别靠默认编码,明确指定 zh 类 COLLATE;要『业务自定义序』用 FIELD 把状态按流程排。