zoukankan      html  css  js  c++  java
  • mysql 汉字排序

    我的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;
    
  • 相关阅读:
    枚举类 --单例模式
    模板设计模式
    动态代理
    反射应用--修改属性值
    通过反射绕过泛型
    java反射
    网络编程练习
    TCP编程
    GUI 聊天界面
    UDP传输多线程
  • 原文地址:https://www.cnblogs.com/po-shi/p/12966488.html
Copyright © 2011-2022 走看看