1、问题

在个人的开发工作中,遇到问题:当时在CRM的客户列表中,拉取客户所属人下拉框功能时,发现系统加载所有用户名称名单,如下图。

解决前原图

问题来了,业务员名称在下拉框的列表中,并没有按照正常惯例以拼音正序进行排序,尤其时名单较多时,不易找到目标名称,影响用户的使用体验。

2、排查

起初以为代码中没有指定排序规则,随后在相应的代码处增加字段排序,以其中一处的代码如例:

    public List<MemberPO> queryCompanyAllMemberIds() {QueryWrapper<MemberPO> queryWrapper = new QueryWrapper();queryWrapper.orderByAsc("name_cn");List<MemberPO> memberPOList = memberMapper.selectList(queryWrapper).stream().collect(Collectors.toList());return memberPOList;}

将对应的SQL在数据库执行,运行后,依然没有生效。

经查询资料,发现问题在于字段的字符集。当前的整个数据库字符集默认是utf8,当需要对有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法直接通过Order By关键字正确排序。

如果是字符集是GBK时,可以直接通过汉字的拼音排序。

3、解决

知道问题本质原因后,修改代码后代码如下:

    public List<MemberPO> queryCompanyAllMemberIds() {QueryWrapper<MemberPO> queryWrapper = new QueryWrapper();queryWrapper.last("ORDER BY CONVERT ( name_cn USING gbk ) ASC");List<MemberPO> memberPOList = memberMapper.selectList(queryWrapper).stream().collect(Collectors.toList());return memberPOList;}

重启后,效果图如下

解决后效果图

4、引申

如果哪天出现需要按照汉字笔画进行排序怎么办?

MySQL不支持汉字笔画排序的,基本都是按照自然语言来排序的。

但是可以变换一下思路,比如:

首先新建一个表,表中存姓氏和笔画数,然后在目标表中添加一个存笔画的字段,这样搜索的时候就可以按照笔画来排序了。

解决中文名单按拼音排序的问题相关推荐

  1. 微信小程序input搜索解决中文问题(输入拼音) 实时搜索节流处理(bindinput 节流)

    微信小程序input搜索解决中文问题(输入拼音) & 实时搜索节流处理(bindinput 节流) 问题 微信小程序输入拼音的时候, 还没有完全输入完成, bindinput就会触发, 当我输 ...

  2. mysql8中文排序_mysql中utf8编码的中文字段按拼音排序

    http://blog.s777n.net/orderbychinesefieldutf8/comment-page-2/ 2010-08-24 17:36 by TomorrowMan | 分类: ...

  3. java对中文首字母拼音排序

    Java本身并没有提供汉字拼音排序的功能.但是,我们可以使用第三方库或者自己实现算法来解决这个问题. 下面是使用开源库"Pinyin4j"实现汉字拼音排序的示例代码: ``` im ...

  4. js中文汉字按拼音排序

    1,datatable拓展 按中文排序 jQuery.extend( jQuery.fn.dataTableExt.oSort, {"chinese-string-asc" : f ...

  5. mysql中拼音排序的方法_mysql的中文数据按拼音排序的2个方法

    客服那边需要我对一些酒店进行中文拼音排序,以前没有接触过,在php群里问了一些大牛..得到了2种答案,都可以.哈哈·~ 以下既是msyql 例子,表结构是utf-8的 方法一.复制代码 代码如下:SE ...

  6. Java对List中的中文属性按照拼音排序

    比较简单的问题,可以用Collections.sort()来进行排序 一般情况下我们会这样做: private static final List<TestEntity> testEnti ...

  7. 中文汉字按拼音排序并按字母分类(uniapp indexedList索引列表格式匹配)

    最近做uni-app项目,遇到中文排序,使用indexedList组件布局渲染.自己也是查询了很多资料,https://www.cnblogs.com/wteng/p/5658972.html展现了一 ...

  8. 中文姓名按照拼音排序-python

    写在前面 在做文档排版的时候经常会遇到姓名的排序问题,当人名很多的时候,我们是不可能人工的一个一个比较排序,那么有什么办法快速解决这一问题吗?答案可定是有,今天为大家介绍一种. 程序 from xpi ...

  9. 数据库中文字段按拼音排序

    使用 order by convert_to(city, 'GBK') 方式按中文字典顺序排序, 测试如下: create table public.test_city(id bigserial pr ...

最新文章

  1. discard connection丢失数据_python kafka 生产者发送数据的三种方式
  2. 精选10大机器学习开源项目 !(附链接)
  3. Android的IPC机制(一)——AIDL的使用
  4. 分布式文件系统(HDFS)与 linux系统文件系统 对比
  5. 计算机应用基础 a卷,计算机应用基础笔试A卷.doc
  6. linux suse 安装redis,suse 安装redis(示例代码)
  7. gels imagej 图片处理_如何用ImageJ进行粒度分析
  8. 贝塞尔曲线UIBezierPath简单使用
  9. Eclipse的Git插件Egit: merge合并冲突具体解决方法
  10. 八数码 (Astar)
  11. 在App Store提交应用时,提示“app名称已被使用”
  12. [联合集训6-25] 蓝雨 线段树+主席树+hash
  13. pritunl管理工具-路由转发配置
  14. oracle官网数据库使用迅雷下载方法
  15. (四)双击放大与缩小图片
  16. 求助 MOR-Tales of seafaring
  17. 标品和非标品如何选品,选品的重要性,店铺怎样布局
  18. 2021年度高等院校皇家勋章授勋仪式-乌隆他尼皇家大学
  19. 计算机硬盘内存不足,电脑提示磁盘空间不足怎么办
  20. Linux乌班图系统,如何安装和配置mysql

热门文章

  1. Linux/UNIX系统编程手册gg
  2. golang各数值类型的最大最小值
  3. 严重: Allocate exception for servlet CustomerServlet java.lang.ClassNotFoundException: cn.itcast.cstm.
  4. cad相贯展开图lisp_cad相贯线的画法
  5. 中国ACM橡胶市场调研与投资预测报告(2022版)
  6. 程序员必备狂拽炫酷吊炸天的动效神器
  7. vb.net 图片水平翻转_犁耕作业效果差?试试大马力拖拉机液压翻转犁正确调整与使用方法...
  8. UE4 让材质的UV动起来
  9. [转载]李开复:什么是领导力
  10. O-RAN,真的会成功吗?[转载]