SQLite类搜索
我在SQLite中搜索时遇到问题 例如,我在SQLite中有一个列表名SQLite类搜索,sql,sqlite,search,sql-like,Sql,Sqlite,Search,Sql Like,我在SQLite中搜索时遇到问题 例如,我在SQLite中有一个列表名 1. Hello USA 2. Hello Africa 3. Hello Asian 4. I Love Asian 5. I love My Africa 6. Asian 7. Africa 8. Country 9. Hello world 当我搜索像“%A%”这样的名称时。结果像 1. Hello USA 2. Hello Africa 3. Hello Asian 4. I Love Asian 5. I lo
1. Hello USA
2. Hello Africa
3. Hello Asian
4. I Love Asian
5. I love My Africa
6. Asian
7. Africa
8. Country
9. Hello world
当我搜索像“%A%”这样的名称时。结果像
1. Hello USA
2. Hello Africa
3. Hello Asian
4. I Love Asian
5. I love My Africa
6. Asian
7. Africa
但是我想先放弃以A开头的名字
1. Asian
2. Africa
3. Hello Asian
4. Hello Africa
5. Hello USA
6. I Love Asian
7. I love My Africa
希望你能告诉我这个问题的解决方法。非常感谢 您可以使用右侧的
按顺序执行此操作:
select t.*
from table t
where name like '%A%'
order by (case when name like 'A%' then 0
when name like '% A%' then 1
else 2 end),
name
编辑:
如果要按字母出现的位置排序结果,请执行以下操作:
order by instr(name, 'A')
编辑二:
如果您的SQLite没有instr()
,那么您可以执行相当痛苦的操作:
order by (case when substr(name, 1, 1) = 'A' then 1
when substr(name, 2, 1) = 'A' then 2
when substr(name, 3, 1) = 'A' then 3
when substr(name, 4, 1) = 'A' then 4
when substr(name, 5, 1) = 'A' then 5
when substr(name, 6, 1) = 'A' then 6
when substr(name, 7, 1) = 'A' then 7
when substr(name, 8, 1) = 'A' then 8
when substr(name, 9, 1) = 'A' then 9
when substr(name, 10, 1) = 'A' then 10
else 11
end)
您可以执行两个查询—一个查询不带前导的%
,另一个查询带前导的%
。然后将结果连接到程序中。您可以在order by子句中使用它-
订购人(姓名+“核对无酶ASC”) 这在一般情况下是行不通的union
和union all
不一定保留子查询中的行顺序。谢谢。我不知道,谢谢戈登。但是如果我想得到亚洲,亚洲,亚洲,亚洲,你好我的亚洲,你好我的亚洲..对不起戈登,麻烦你给我解释一下定位关键词。我用过,它抛出“无此功能:定位”@HuỳnhNgọcBang。道歉。SQLite中正确的函数是instr()
——假设您使用的是最新版本()。:)我怎么了。我无法使用此命令instr()。SQLite抛出错误:没有这样的函数:instrOk@Gordon,非常感谢您的热情……)