mysql 拼音排序_mysql汉字字段按拼音排序的方法

本节内容:

mysql汉字字段按拼音排序

MySQL使用latin1的默认字符集,对汉字字段直接使用GBK内码的编码进行存储,当需要对一些有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法通过order by关键字正确排序。

针对使用utf8字符集的数据库,主要的方法有:

1)直接转换字段为gbk,比如:

复制代码 代码示例:

SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;

或干脆将相应字段改为gbk字符集。

在数据库中测试了上面的方法,或直接按字段排序,都不行,主要是排序结果不理想。

2)查表法

创建一个新表,用来存储拼音声母和使用该声母的汉字首字的对应关系。

然后,写一个函数,每次排序时通过转换为gbk再查表的方法得到字段内容首字的声母的方法。

这个方法也测试过,比较麻烦,而且针对我的数据库,也不能正确排序。

后来,查询了汉字编码的一些资料,发现GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。

根据此原理,直接按字段排序就应该可以的(我的数据库使用Latin1字符集,存的汉字本来就

你可能感兴趣的:(mysql,拼音排序)