sorting Engli sh Слова перед китайскими словами в SQLite3 - PullRequest
0 голосов
/ 05 августа 2020

У меня есть таблица «Phone_Contact», в которой есть столбцы ContactsId, DevId, FName, FNamePinYinSpel. FName будет иметь имена как на китайском, так и на английском sh. Теперь, согласно требованиям, мне удалось получить контакты в следующем порядке:

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 - это английский sh эквивалент китайских имен.

1 Ответ

0 голосов
/ 08 августа 2020

Ваше предложение ORDER BY не выполняет то, что вы собираетесь делать. Он учитывает только первые 5 символов FNamePinYinSpel.

ORDER BY substr(FNamePinYinSpel ,1,5), (substr(FName,1,5) < 'zz')

Но, похоже, вы хотите отсортировать по целому FNamePinYinSpel. В этом случае просто снимите ограничение на 5 символов, и часть (substr(FName,1,5) < 'zz') добавлять не нужно. Это может быть полезно, если и китайские имена, и имя Engli sh были смешаны в одном столбце, но у вас есть FNamePinYinSpel, в котором есть все Engli sh имена

ORDER BY FNamePinYinSpel
...