2011-08-27 76 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