不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2023-10-27 22:32:24  修改时间:2024-05-03 20:07:30  分类:MySQL/Redis  编辑

根据查询结果的拼音排序,address是要排序的字段

ORDER BY CONVERT( address USING gbk ) COLLATE gbk_chinese_ci ASC

解释:

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

例如数据表某字段client_name的字符编码是utf8_general_ci:

SELECT  *  FROM  `client_info_msg` ORDER BY CONVERT( client_name USING gbk ) COLLATE gbk_chinese_ci ASC;