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個獨立的查詢(一個針對完全匹配,一個用於的替代以及包含一個)。
有沒有其他的選擇?