sqlite - 如何根据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
我需要在单个查询中完成此操作。这可能吗?
解决方案
您在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
推荐阅读
- c# - 如何使用c#将文本框中输入的值与数组(mysql数据集)中的值顺序进行比较?
- python - 如何更有效地提取自定义类型的numpy数组的值?
- c# - 如何创建一个字典,其中键是三个字符串的组合?
- oop - oops 消息中的堆栈是什么意思?
- openlayers - 如何在 openlayers 6 中使用 wfst?
- python - 当包含额外内容时,如何使 PIP 仅安装入口点
- php - PHP在本地主机上工作,但不在实时网站上
- javascript - Firestore 更新功能不适用于 collectionGroup
- mendix - 基本 Mendix 应用程序 - ImageViewer 中未显示图像
- mysql - 远程设置和使用mysql服务器的麻烦