2011-08-27 2 views
3

나는 순서에 따라 문제가 발생합니다. 비슷한 키워드로 SQL DB에서 레코드를 가져오고 있습니다. 이제 모든 레코드가 입력 된 키워드 순서에 따라 반환되어야합니다. 예 : 사용자가 "Physics"를 입력하면 Physics (정확한 단어)가 있으면이를 반환하고 그 후에는 다른 모든 레코드를 반환합니다.입력하신 단어를 기초로 한 키워드입니다.

SELECT * 
FROM Subject SM 
WHERE SM.SubjectName LIKE '%' + @SubjectName + '%' 
ORDER BY @SubjectName DESC 

어떻게하면됩니까?

답변

7
SELECT * 
FROM Subject SM 
WHERE SM.SubjectName LIKE '%' + @SubjectName + '%' 
ORDER BY CASE WHEN SM.SubjectName = @SubjectName THEN 0 
       ELSE 1 
     END ASC , 
     SM.SubjectName DESC 
2

더 관련성 추가 할 수 있습니다

SELECT   * 
FROM  (SELECT *, 
       CASE 
         WHEN name = 'qqq' 
         THEN 1 
         WHEN name LIKE 'qqq%' 
         THEN 2 
         WHEN name LIKE '%qqq%' 
         THEN 3 
         ELSE 0 
       END AS weight 
     FROM t 
     ) 
     q 
WHERE q.weight > 0 
ORDER BY q.weight, 
     q.name 
관련 문제