Mysql 中英文混合排序
2014-05-04 13:43
1346 查看
找了一下国内和国外网站,都没有很好的解决方案。
大概的几个建议:
一、
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拼音类可以实现。
如果有其他更好的方法,欢迎分享。
大概的几个建议:
一、
最简单的排序方法
最简单的排序方法只需要一条 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拼音类可以实现。
如果有其他更好的方法,欢迎分享。
相关文章推荐
- MySQL中英文混合排序最简单的办法
- MySQL中英文混合排序最简单的办法
- 中英文混合排序
- java List 排序问题,中英文混合排序
- Android实现列表数据按名称排序、中英文混合排序
- iOS 数组内中英文混合排序
- 数据库中英文混合排序
- iOS 数组内中英文混合排序
- android下中英文混合排序
- SQL中英文混合排序
- mysql 从中英文混合串中截取字符
- 38、微信通讯录联系人汉语拼音中英文混合排序
- Android按名称排序,中英文混合排序
- MySQL 中文截取 字符串 中英文混合截取 无乱码
- [简易]中英文混合排序
- iOS 中英文混合排序
- 中英文混合按照首字母排序
- android联系人中英文混合排序
- 一个关于nvarchar字段排序,中英文混合排序的问题
- 中英文及数字混合排序