使用UTF-8的字段对中文排序,MYSQL中文排序时,不是按拼音字排序的,怎么办
PHP
0
使用UTF-8的字段对中文排序,MYSQL中文排序时,不是按拼音字排序的,怎么办
针对使用utf8字符集的数据库,以下两个方法非常实用:
1)直接转换字段为gbk,比如:
SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;
或者干脆将相应字段改为gbk字符集。
这种方法很实用,不用改任何东西。
2)附加字段或表法
创建一个新表,用来存储拼音声母和使用该声母的汉字首字的对应关系。然后写一个函数,每次排序时通过转换为gbk再查表的方法得到字段内容首字的声母的方法。
此方法比较费神。但速度快。
字段GBK字符集也不全是按拼音排序的,,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼 音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。
如果要精确的,还是使用方法2更靠谱。
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。