sqlite多词搜索及智能排序

Search multiple words and intelligent sorting in sqlite

我有一个应用程序,用户可以在其中键入将从 SQLite 数据库中获取结果的搜索查询。 如果用户类型 word1 word2 word3,我使用以下查询:

SELECT * FROM myTable 
WHERE myColumn LIKE word1 
   OR myColumn LIKE word2 
   OR myColumn LIKE word3 
ORDER BY myColumn

我得到了至少输入了三个词之一的所有值。我想首先得到匹配三个值的结果,然后是匹配两个值的结果,然后是只匹配一个值的结果

您可以对 WHERE 子句中的布尔表达式求和并降序排列:

SELECT * 
FROM myTable 
WHERE myColumn LIKE 'word1'  OR myColumn LIKE 'word2' OR myColumn LIKE 'word3' 
ORDER BY ((myColumn LIKE 'word1') + (myColumn LIKE 'word2') + (myColumn LIKE 'word3')) DESC

请注意,如果您想要单词的完全匹配,您应该使用 = 而不是 LIKE,但是如果您想要部分匹配,您必须连接 % 通配符:

myColumn LIKE '%' || 'word1' || '%'

或:

myColumn LIKE '%word1%'