根据输入的关键字排序

时间:2011-08-27 14:04:50

标签: sql sql-server

我按顺序面临问题,我正在从基于关键字的SQL DB获取记录,现在我希望所有记录都应该根据输入的关键字顺序返回。 示例:如果用户输入“Physics”,则它首先返回物理(确切的单词)(如果存在),之后返回所有其他记录。

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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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