我有一个“phone\u contact”表,它有contactsid、devid、fname、fnamepinyinspel列。fname将有中文和英文两种名称。现在根据要求,我可以按以下顺序获得联系人:
FName FNamePinYinSpel
北蔡王先生 Bei Cai Wang Xian Shen
广州房东 Fang Hua Lu Qi Tian Lian Suo
jie王 Jie wang
杰wang Jie wang
Lastname Tess Lastname Tess
李 二 Li er
李 四 Li si
李 一 Li yi
李 一 一 Li yi yi
林 二 Lin er
林 一 Lin yi
林 一 一 Lin yi yi
凌 一 Ling yi
凌 一 一 Ling yi yi
凌 二 Ling er
凌 依依 Ling yi yi
使用下面的查询
SELECT icu_load_collation('en-u-ks-level1-kr-latn-zh','PinyinM')";
SELECT FName from Phone_Contact where DevId is 1 ORDER BY substr(FNamePinYinSpel ,1,5), (substr(FName,1,5) < 'zz'), FName COLLATE PinyinM LIMIT 50 OFFSET 0 ;
但是下面提到了期望的结果。
FName FNamePinYinSpel
北蔡王先生 Bei cai wang xian shen
广州房东 Fang hua lu qi tian lian suo
jie王 Jie wang
杰wang Jie wang
Lastname Tess Lastname Tess
李 二 Li er
李 四 Li si
李 一 Li yi
李 一 一 Li yi yi
林 二 Lin er
林 一 Lin yi
林 一 一 Lin yi yi
凌 二 Ling er
凌 一 Ling yi
凌 一 一 Ling yi yi
凌 依依 Ling yi yi
有人能帮我得到想要的输出吗注:fnamepinyinspel相当于英文的中文名字。
1条答案
按热度按时间wljmcqd81#
你的
ORDER BY
条款不是做你想做的事。它只考虑了FNamePinYinSpel
.但似乎你想按整体排序
FNamePinYinSpel
. 在这种情况下,只需删除5个字符的限制,没有必要包括(substr(FName,1,5) < 'zz')
部分。如果中文名字和英文名字都混在一个单独的栏中,但是你有FNamePinYinSpel
全是英文名字