jadestoner

导航

 

我的MySQL数据库字符集用的UTF-8,此为环境。

做项目时需要用到对查出来的数据按首字母排序,事实上也就是对汉字的拼音按照a--z的顺序进行升序降序排列。

本以为是简单的order by XXX  asc/desc,哪知道最后结果并没有按照想象中的排序。

百度才知道,使用utf-8字符集时,汉字排序并不是按照字母顺序的。

select * from (
select "三军" as name
union
select "步拿拿"
union
select "微服务"
union
select "预估工时"
)
a
order by a.name asc;

预计结果

步拿拿
三军
微服务
预估工时

但实际结果为

解决方式有两个:

1.修改数据库字符集,把utf-8改为gbk。

2.修改sql语句:把select * from user order by name desc 改为 select * from user order by convert(name using gbk) desc

这样排序的字段就按照字母顺序排列了。

select * from (
select "三军" as name
union
select "步拿拿"
union
select "微服务"
union
select "预估工时"
)
a
order by convert(a.name using gbk)  asc;
posted on 2020-05-26 16:42  jadestoner  阅读(714)  评论(0编辑  收藏  举报