您的位置:首页 > 数据库 > MySQL

Mysql 中英文混合排序

2014-05-04 13:43 1346 查看
找了一下国内和国外网站,都没有很好的解决方案。

大概的几个建议:

一、

最简单的排序方法

最简单的排序方法只需要一条 SQL语句:

select * from musician_ordered order by convert(name using gbk) collate gbk_chinese_ci;

首先,对name字段进行gbk编码,然后,对编码后的内容根据gbk_chinese_ci进行整理排序。

这样得到的结果,英文是排在中文前面的,而且是根据拼音排序的。

http://www.lijiejie.com/mysql-first-char-filter/

二、

mysql对中文的支持真是比较差,一旦库里面既有中文数据,又有英文数据,排序出来就是乱七八糟的. 在网上搜了一下,大家给出的几个解决方案都不太好用.

这里给出一个土一点的解决方法,比较适合已经有大量数据,并且很少有新数据加入的情况. 在数据导入前,在excel或者别的软件里把数据排序好,这些软件一般都对多语言支持比较好,排序好后, 加一列,这列为id,顺序递增,然后导入mysql. 以后,需要按字母顺序排序的时候, 直接按id排序即可. 如果要插入数据, 可用相应的算法保证插入时不打乱排序.

http://ask.test.51js.com/q/758.html

三、数据量不大的情况下,数据查出来以后,用java/pyton等语言的工具类转换,把中文数据转换成英文后在排序。亲测java拼音类可以实现。

如果有其他更好的方法,欢迎分享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: