Mysql排序-如何根据汉字首字母排序

 

一、问题

需要进行中文排序。比如说微信通讯录里面的排序列表,啊XX    排到   曾XX    等等。

二、原理

如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了),直接在查询语句后面添加ORDER BY name ASC,查询结果将按照姓氏的升序排序;

如果存储姓名的字段采用的是utf8字符集,需要在排序的时候对字段进行转码,对应的代码是ORDER BY convert(name using gbk) ASC

三、解决方案

目前暂时提供三种方案,如果大神有其他的方案,可以在评论中提出,共同进步:

方式一

首先,对name字段进行gbk编码,然后,对编码后的内容根据gbk_chinese_ci进行整理排序。这样得到的结果,英文是排在中文前面的,而且是根据拼音排序的。

pet:数据库表名
owner:排序字段名
CONVERT:提供一个在不同字符集之间转换数据的方法。
COLLATE:COLLATE是一个算法语句,主要用于对字符进行排序,经常出现在表的创建语句中。sql语句里面的COLLATE主要用于对字符进行排序。

方式二

name,是属性名

pet,表名

 

方式三

可以通过  pinyin4j 进行程序转换排序。

pinyin4j 下载

四、测试案例

创建测试数据

 

查询语句

单个字段

多个字段

其他类型排序

以上的方案还有一个小bug,多音字的问题。

 






如果您认为本教程质量不错,读后觉得收获很大,预期工资能蹭蹭蹭的往上涨,那么不妨小额赞助我一下,让我有动力继续写出高质量的教程。

发布者

souvc

souvc

搜你所想,投你所好。

《Mysql排序-如何根据汉字首字母排序》有54个想法

  1. Pingback: gvk biosciences
  2. Pingback: DMPK Testing
  3. Pingback: Aws Alkhazraji
  4. Pingback: scr888 download
  5. Pingback: lowongan kerja
  6. Pingback: GVK Bio-sciences
  7. Pingback: home
  8. Pingback: mujer plumas
  9. Pingback: Recipes
  10. Pingback: Java Tutorial
  11. Pingback: payday loan
  12. Pingback: Cheap hoverboard
  13. Pingback: telefoonhoesjes
  14. Pingback: Good looking
  15. Pingback: boutique en ligne
  16. Pingback: blacharz łódź
  17. Pingback: legit bitcoin casino
  18. Pingback: instakram kahpeleri
  19. Pingback: UK Chat Rooms
  20. Pingback: star stable game club
  21. Pingback: Teen Chat
  22. Pingback: fotbollströjor barn
  23. Pingback: Share Movies
  24. Pingback: File hosting
  25. Pingback: Hier klicken
  26. Pingback: click to investigate
  27. Pingback: PK Studies in rats
  28. Pingback: 2019
  29. Pingback: maglia fiorentina
  30. Pingback: arsenal trøje børn
  31. Pingback: maglie calcio
  32. Pingback: maglie calcio bambino
  33. Pingback: maglie calcio bambino

发表评论