【Mysql】MySQL按中文拼音排序

在做中文排序时,我们希望查询出来的记录能够按照汉语拼音即英文的26个字母排序,但是 utf8mb4 字符集是外国人弄的,不是按照汉语拼音的顺序排列的。
因此,我们需要将要排序的字段把编码设定为 GBK 再进行排序。

环境

K V
版本 5.7.28
字符集 utf8mb4

解决方案

  • mysql 中对字符的转码支持的不错,convert() 函数,直接搞定

缺点 :不能解决多音字的问题
比如: 重庆chong qing 使用convert() 函数转换后,发音为zhong qing

SQL实验

  1. 正常查询

     SELECT user_desc FROM user_table ORDER BY user_desc DESC;
    
  2. utf8mb4 转 gbk 编码 按字母升序

    SELECT user_desc FROM user_table ORDER BY CONVERT(user_desc USING gbk);
    
  3. utf8mb4 转 gbk 编码 按字母降序

    SELECT user_desc FROM user_table ORDER BY CONVERT(user_desc USING gbk) DESC;
    
  4. utf8mb4 转 utf8mb4 编码 按字母降序(同1

    SELECT user_name FROM user_table ORDER BY CONVERT(user_name USING utf8mb4) DESC;
    
发布了105 篇原创文章 · 获赞 46 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/AV_woaijava/article/details/103763848