首页 > 解决方案 > 如何根据where条件在sqlite上按条件设置顺序?

问题描述

我在 sqlite db 中关注查询和国家列表

select * from country where name like 'searchString%' or name like '% searchString%'

如果 searchString 是 'in',结果会像

1   British Indian Ocean Territory
2   India
3   Indonesia

但我需要第一个条件的结果(如 'searchString%' )结果应该排在第一位

1   India
2   Indonesia
3   British Indian Ocean Territory

我需要在单个查询中完成此操作。这可能吗?

标签: sqliteandroid-sqlitesql-order-by

解决方案


您在WHERE子句中只需要 1 个条件,并且条件:

name LIKE 'in%' DESC

in 该ORDER BY子句将返回从'in'顶部开始的国家/地区:

SELECT * 
FROM country 
WHERE name LIKE '%in%'
ORDER BY name LIKE 'in%' DESC, name

另一种选择是使用字符串函数:

SELECT * 
FROM country 
WHERE name LIKE '%in%'
ORDER BY instr(lower(name), 'in'), name

请参阅演示
结果:

> id | name                          
> -: | :-----------------------------
>  2 | India                         
>  3 | Indonesia                     
>  1 | British Indian Ocean Territory

推荐阅读