SQLite中拉丁文和英文名称的条件排序

时间:2017-05-24 14:19:29

标签: mysql sql database sqlite

我有一个表'Employee',其中包含 DevId,Id,FName,FNamePinYin 列。 FName将包含中文和英文的联系人姓名。现在根据要求,我可以设法按以下顺序获取联系人:

FName          FNamePinYin
爱华 杨         AIHUA YANG
安国华          ANGUOHUA
Anguohua       ANGUOHUA
Aihua Yang     AIHUA YANG
爸              BA
波 小           BO BEI BI XIAO
毕慧            BIHUI
Bin Guo        BIN GUO
Bihui          BIHUI
Ba             BA

使用以下查询:

Select FName, SortString 
from Employee 
where Id in (SELECT Id 
             FROM EMP1
             WHERE '1' = DevId 
             ORDER BY FnamePinYin 
             LIMIT 500 OFFSET 0) 
ORDER BY substr(FnamePinYin,1,1) , Lower(FName) DESC

现在问题是联系人名称没有按升序排序。

注意:此处需要使用Lower(FName)DESC才能在每个字母的类别中首先显示中文名称。

我想要的输出:

FName          FNamePinYin
爱华 杨         AIHUA YANG
安国华          ANGUOHUA
Aihua Yang     AIHUA YANG
Anguohua       ANGUOHUA
爸             BA
波 小           BO BEI BI XIAO
毕慧            BIHUI
Ba             BA
Bihui          BIHUI
Bin Guo        BIN GUO

FNamePinYin是英文对应的中文名字。

有人能帮助我得到我想要的结果吗?

1 个答案:

答案 0 :(得分:0)

你的问题仍然不完全清楚,但根据你的陈述,中英文名称应该按照加入顺序排列" "在每个类别(A-Z)"中,以下内容应该做我想要的:

 select * 
 from Employee 
 where Id in (SELECT Id 
         FROM PBAPL1 
         WHERE '1' = DevId 
         ORDER BY FnamePinYin 
         LIMIT 500 OFFSET 0)
 order by substr(FNamePinYin,1,1), (substr(FName,1,1) < 'zz'), FName;