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%'
我有一个应用程序,用户可以在其中键入将从 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%'