【Mysql】MySQL按中文拼音排序

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

环境

KV
版本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;
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值