2011-08-27 77 views
3

我面臨的問題是,我從SQL DB基於關鍵字提取記錄,現在我想根據輸入的關鍵字順序返回所有記錄。 例如:如果用戶輸入「物理」,那麼它首先返回物理(確切的詞)如果存在,然後返回所有其他記錄。根據輸入的關鍵字排序

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