怎样进行某一个字段实现中英文混合排序,,,, 
要求实现结果: 
    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分一同,,,,

解决方案 »

  1.   

    一次 between 'a' and 'z' 
    一次 order by 字段名 collate chinese_PRC_CS_AS_KS_WS 
      

  2.   


    对,是按a-->Z的顺序来排的,先把所有以a开头的英文、中文排出来,再排b的,依次至z
      

  3.   

    呵呵,分两步:
    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
      

  4.   

    select f1,group_concat(newpy order by f1,id SEPARATOR '') from (
    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为去掉多音字的对照表
      

  5.   

    呵呵,确实很复杂,要做对照表,
    然后按照对照表来排序。不过,如果是多个汉字,并且当前几个汉字是一样的话,也是很麻烦的。(恐怕要设置个最大匹配长度才可以)如果这种排序不是放在sql上,而是放在php上的话,会很简单。