高级SQLite ORDER BY查询

时间:2017-10-21 20:55:40

标签: sql sqlite sorting cursor

我有兴趣以非常特殊的方式订购光标。在我的程序中,用户可以输入搜索查询。我想将带有 项目的结果与他们输入的查询一起返回,然后是其他简单 包含的项目 查询。

例如:用户输入“de”。我希望我的光标以这样的方式排序,其中 “de”开头的所有列都是第一个,其次是 包含 “de”。

这就是我希望我的光标看起来像:

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

以“de”开头的光标高于其他只包含“de”的光标。

PS我在这个网站上遇到了一些人们使用ORDER BY FIELD()函数的答案。这看起来像我想要使用的,但我得到一个错误

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

1 个答案:

答案 0 :(得分:2)

你可以把各种各样的表达式放在一个ORDER BY子句中,然后提出一个表达式"表达以' de'开头的东西。第一"使用CASE形式非常简单:

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

因此,当user_type列以'de'开头时,case表达式的计算结果为0,否则评估结果为101之前排序,以'de'开头的类型将首先出现。

field函数是AFAIK,特定于MySQL。