2017-10-21 101 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