表A有 中字段 title(标题) ,tags(关键字,多个关键字用,逗号隔开)
现在进行关键字查询 先进行所有的 tags 匹配,如果没有再进行 title匹配,要求 有tags关键字匹配 排在前面,然后再排title匹配的
------解决方案--------------------
order by case when charindex(','+titile+',',','+关键字+',')>0 then 1 else 0 end
------解决方案--------------------
以查找"vbn"为例
- SQL code
create table t1 (title varchar(10),tags varchar(20))insert t1select 'abc','zxc,vbn,qwer' union allselect 'vbn','tyu,uio,vbn' union allselect 'vbn','tyu,uio,vbn' union allselect 'abc','abc,vbn,tyu' union allselect 'vbn','tyu,uio' union allselect 'vbn',null union allselect null,'vbn'goselect * from t1-- where-- tags like '%vbn%'-- or-- title like '%vbn%'order by (case when charindex(','+tags+',',',vbn,')>0 then 0 when tags is null then 2 else 1 end)/*(所影响的行数为 7 行)title tags----- -------NULL vbnabc zxc,vbn,qwervbn tyu,uio,vbnvbn tyu,uio,vbnabc abc,vbn,tyuvbn tyu,uiovbn NULL*/godrop table t1