SQL多字搜索,按匹配数排序

时间:2010-12-10 15:44:24

标签: sql search-multiple-words

我正在尝试用多个搜索词组成一个SQL SELECT查询。但我希望结果按照匹配的数量排序。

例如,让搜索字符串为“红绿蓝”。我希望结果包含所有这三个单词,然后是结果,其中包含两个单词,最后只有一个单词匹配。

SELECT
    *
FROM
    table
WHERE
    (col LIKE '%red%') OR
    (col LIKE '%green%') OR
    (col LIKE '%blue%')
ORDER BY
    ?????

提前致谢!

3 个答案:

答案 0 :(得分:5)

ORDER BY
(
CASE 
WHEN  col LIKE '%red%' THEN 1
ELSE 0
END CASE
+     
CASE 
WHEN  col LIKE '%green%' THEN 1
ELSE 0 
END CASE
+    
CASE 
WHEN  col LIKE '%blue%' THEN 1
ELSE 0
END CASE
)  DESC

如果您的数据库供应商有IF,您可以使用它而不是CASE(例如,对于Mysql,您可以编写     IF (col LIKE '%red% , 1,0) + IF(....'

答案 1 :(得分:1)

您使用的是什么平台?如果是SQL Server,那么听起来像全文搜索结构将是你最合适的。

http://msdn.microsoft.com/en-us/library/ms142583.aspx

答案 2 :(得分:0)