SQL поиск нескольких слов, упорядоченный по количеству совпадений - PullRequest
4 голосов
/ 10 декабря 2010

Я пытаюсь составить запрос SQL SELECT с несколькими поисковыми словами.Но я хочу, чтобы результат был упорядочен по количеству совпадений слов.

Например, пусть строка поиска имеет вид «красный, зеленый, синий».Я хочу, чтобы результаты, которые содержат все эти три слова сверху, после этого результаты, которые содержат два из них, и в конце - только одно слово совпадает.

Ответы [ 3 ]

5 голосов
/ 10 декабря 2010
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 голос
/ 10 декабря 2010

Какую платформу вы используете?если SQL Server, то это звучит так, как будто вам подойдет архитектура полнотекстового поиска.

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

0 голосов
/ 10 декабря 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...