2017-10-21 103 views
0

我有興趣以非常特定的方式排序遊標。在我的程序中,用戶可以輸入搜索查詢。我想回用項目開始與他們輸入查詢排序結果,其次是簡單包含查詢該項目的其餘部分。高級SQLite ORDER BY查詢

例如:用戶輸入「de」。我想我的光標,以這樣的方式進行排序,所有的列是開始與「德」是第一,其次是列的其餘部分是包含「德」。

這裏就是我想我的光標是什麼樣子:

Deathless Behemoth 
Deathmark 
Deathmark Prelate 
Deathmask Nezumi 
Deathmist Raptor 
Deathpact Angel 
Acid Web Spider 
Careful Consideration 
Hell-Bent Raider 
Jhovall Rider 
Living Death 

開始,「德」是高於一切,僅僅包含「德」的光標。

PS我在這個網站上遇到了一些人在使用ORDER BY FIELD()函數的答案。那種貌似我想要使用的工具,但我得到一個錯誤

Error while executing SQL query on database 'database_name': no such function: FIELD 

回答

2

你可以把各種表情的ORDER BY子句,並想出,說一個表達式「把東西開始以「德」爲先」是非常簡單的使用案例的形式:

order by case when lower(user_type) like 'de%' then 0 else 1 end, 
     lower(user_type) 

所以當user_type'de'啓動時,case表達式計算爲0,否則計算結果爲1,自0排序前1,以'de'開頭的類型將排在第一位。

field函數是AFAIK,特定於MySQL。

+0

哇,像一個魅力工作。我還有很多要了解SQLite查詢。謝謝! – hellaandrew