mysql实现对字符列第一个汉字首字母拼音进行A-Z顺序排序,使用gbk编码
场景:
在特殊场景中,需要对某列进行排序,预期是按照汉字拼音首字母进行排序,如果使用字段直接排序会发现不符合预期,那么需要做一些特殊处理
一、不符合预期重现,使用字段直接排序
1、示例代码
select id, remark
from t_business_one
order by remark desc;
输出:
从结果看,很明显不符合预期
二、处理解决后,符合预期
1、使用 convert() 函数对第一个汉字编码类型转换为 gbk 后,再进行排序
select id, remark
from t_business_one
order by convert(substr(remark, 1, 1) using gbk) desc;
或
select id, remark
from t_business_one
order by convert(left(remark, 1) using gbk) desc;
输出:
从结果可以看出,符合预期排序