我按顺序面临问题,我正在从基于关键字的SQL DB获取记录,现在我希望所有记录都应该根据输入的关键字顺序返回。 示例:如果用户输入“Physics”,则它首先返回物理(确切的单词)(如果存在),之后返回所有其他记录。
SELECT *
FROM Subject SM
WHERE SM.SubjectName LIKE '%' + @SubjectName + '%'
ORDER BY @SubjectName DESC
我怎样才能做到这一点?
答案 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