按拼音排序

更新时间:2023-03-12 10:13:19 阅读: 评论:0

阅读题答题技巧-头上长痘痘是什么原因引起的

按拼音排序
2023年3月12日发(作者:学理财)

MySQL按照汉字的拼⾳排序、按照⾸字母分类

项⽬中有时候需要按照汉字的拼⾳排序,⽐如联系⼈列表、矿物分类等,有的还需要按拼⾳字母从A到Z分类显⽰。

如果存储汉字的字段编码使⽤的是GBK字符集,因为GBK内码编码时本⾝就采⽤了拼⾳排序的⽅法(常⽤⼀级汉字3755个采⽤拼⾳排

序,⼆级汉字就不是了,但考虑到⼈名等都是常⽤汉字,因此只是针对⼀级汉字能正确排序也够⽤了),直接在查询语句后⾯添加ORDER

BYnameASC,查询结果将按照姓⽒的升序排序;如果存储姓名的字段采⽤的是utf8字符集,需要在排序的时候对字段进⾏转码,对应的代

码是ORDERBYconvert(nameusinggbk)ASC,同样,查询的结果也是按照姓⽒的升序排序。

按拼⾳⾸字母分类显⽰的时候,需要借助⼀个中间表,存储的是字母对应的汉字的编码范围,这样的话,每次取出汉字然后跟中间表⽐

对就可以了,中间表创建和插⼊数据的SQL如下:

/*

NavicatMySQLDataTransfer

TargetServerType:MYSQL

TargetServerVersion:50617

FileEncoding:65001

Date:2015-07-0211:12:15

*/

SETFOREIGN_KEY_CHECKS=0;

------------------------------

--Tablestructurefort_coslers

------------------------------

DROPTABLEIFEXISTS`t_coslers`;

CREATETABLE`t_coslers`(

`id`int(11)NOTNULLAUTO_INCREMENT,

`f_PY`char(1)CHARACTERSETutf8DEFAULTNULL,

`cBegin`smallint(5)unsignedNOTNULL,

`cEnd`smallint(5)unsignedNOTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBAUTO_INCREMENT=24DEFAULTCHARSET=latin1;

------------------------------

--Recordsoft_coslers

------------------------------

INSERTINTO`t_coslers`VALUES('1','A','45217','45252');

INSERTINTO`t_coslers`VALUES('2','B','45253','45760');

INSERTINTO`t_coslers`VALUES('3','C','45761','46317');

INSERTINTO`t_coslers`VALUES('4','D','46318','46825');

INSERTINTO`t_coslers`VALUES('5','E','46826','47009');

INSERTINTO`t_coslers`VALUES('6','F','47010','47296');

INSERTINTO`t_coslers`VALUES('7','G','47297','47613');

INSERTINTO`t_coslers`VALUES('8','H','47614','48118');

INSERTINTO`t_coslers`VALUES('9','J','48119','49061');

INSERTINTO`t_coslers`VALUES('10','K','49062','49323');

INSERTINTO`t_coslers`VALUES('11','L','49324','49895');

INSERTINTO`t_coslers`VALUES('12','M','49896','50370');

INSERTINTO`t_coslers`VALUES('13','N','50371','50613');

INSERTINTO`t_coslers`VALUES('14','O','50614','50621');

INSERTINTO`t_coslers`VALUES('15','P','50622','50905');

INSERTINTO`t_coslers`VALUES('16','Q','50906','51386');

INSERTINTO`t_coslers`VALUES('17','R','51387','51445');

INSERTINTO`t_coslers`VALUES('18','S','51446','52217');

INSERTINTO`t_coslers`VALUES('19','T','52218','52697');

INSERTINTO`t_coslers`VALUES('20','W','52698','52979');

INSERTINTO`t_coslers`VALUES('21','X','52980','53640');

INSERTINTO`t_coslers`VALUES('22','Y','53689','54480');

INSERTINTO`t_coslers`VALUES('23','Z','54481','55289');

借助中间表查询汉字⾸字母的⽰例SQL如下(utf8字符集):

,,t2.f_PY

FROMt_urt1,t_coslerst2

WHERECONV(HEX(LEFT(CONVERT(INGgbk),1)),16,10)

ORDERBYconvert(inggbk)ASC

需要注意的⼀点是,上述的排序、分类⽅法对多⾳字的⽀持并不是很好,要求⾼精度的同学慎⽤。

本文发布于:2023-03-12 10:13:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1678587199138536.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:按拼音排序.doc

本文 PDF 下载地址:按拼音排序.pdf

下一篇:返回列表
标签:按拼音排序
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|