怎样进行某一个字段实现中英文混合排序,,,,
要求实现结果:
adidas
AEE/爱意
AF
AF棒球帽
Agatha
Albion/奥尔滨
AMD
Andox
Artini
阿拉斯加
阿玛尼
阿依莲
benefit
笔
贝佳斯
暴力熊
cD
cf
card
,,
修改字段字符集改成gbk后,输出的结果排序为adida b c (先为英文的a--->z,后面的为中文)受国者,爱立信 爱慕 爱普生,
若回答此问T,请到http://topic.csdn.net/u/20081125/14/aec53d61-22a5-4e6c-848c-b5756a3d68bb.html 处6言,50分一同,,,,
要求实现结果:
adidas
AEE/爱意
AF
AF棒球帽
Agatha
Albion/奥尔滨
AMD
Andox
Artini
阿拉斯加
阿玛尼
阿依莲
benefit
笔
贝佳斯
暴力熊
cD
cf
card
,,
修改字段字符集改成gbk后,输出的结果排序为adida b c (先为英文的a--->z,后面的为中文)受国者,爱立信 爱慕 爱普生,
若回答此问T,请到http://topic.csdn.net/u/20081125/14/aec53d61-22a5-4e6c-848c-b5756a3d68bb.html 处6言,50分一同,,,,
一次 order by 字段名 collate chinese_PRC_CS_AS_KS_WS
对,是按a-->Z的顺序来排的,先把所有以a开头的英文、中文排出来,再排b的,依次至z
1、拆分字符串,取拼音首字母;
2、按字母排序。select f1,group_concat(newpy order by f1,id SEPARATOR '') from (
select a.f1,b.id,mid(f1,b.id,1) as py,
func_get_first_letter(mid(f1,b.id,1)) as newpy
from ff a
left join lsb1 b on length(f1)>=b.id) aa
group by f1 order by 2LSB1为临时表,只有ID字段,1-100000
func_get_first_letter:
参考
http://yueliangdao0608.blog.51cto.com/397025/81271
select a.f1,b.id,mid(a.f1,b.id,1) as py,
COALESCE(c.py,mid(a.f1,b.id,1)) as newpy
from ff a
left join lsb1 b on length(a.f1)>=b.id
left join hzpy c on mid(a.f1,b.id,1)=c.hz) aa
group by f1 order by 2;hzpy为去掉多音字的对照表
然后按照对照表来排序。不过,如果是多个汉字,并且当前几个汉字是一样的话,也是很麻烦的。(恐怕要设置个最大匹配长度才可以)如果这种排序不是放在sql上,而是放在php上的话,会很简单。