11
我需要一个SQLite查询,只使用LIKE搜索1个字段。SQLite LIKE&ORDER BY匹配查询
基本例如:
SELECT name FROM table WHERE name LIKE "%John%" ORDER BY name LIMIT 10;
的问题是,我想要的结果,以这种方式进行排序:
- 如果该字段是相等的(例如,“约翰”)
- 如果该字段以“John”开头(例如“John Doe”)
- 如果该字段包含“John”(例如“Jane John Doe”)
以下查询达到了预期的结果,但是慢:
SELECT name FROM table WHERE name LIKE "%John%" ORDER BY CASE WHEN name = "John"
THEN 1 ELSE 2 END, CASE WHEN name LIKE "John%" THEN 1 ELSE 2 END, name LIMIT 10;
上面的查询是较慢的(或I测试它不正确地)比使用3个独立的查询(一个针对完全匹配,一个用于的替代以及包含一个)。
有没有其他的选择?