order by case when charindex(','+titile+',',','+关键字+',')>0 then 1 else 0 end
以查找"vbn"为例 create table t1 (title varchar(10),tags varchar(20)) insert t1 select 'abc','zxc,vbn,qwer' union all select 'vbn','tyu,uio,vbn' union all select 'vbn','tyu,uio,vbn' union all select 'abc','abc,vbn,tyu' union all select 'vbn','tyu,uio' union all select 'vbn',null union all select 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 vbn abc zxc,vbn,qwer vbn tyu,uio,vbn vbn tyu,uio,vbn abc abc,vbn,tyu vbn tyu,uio vbn NULL */ go drop table t1是这样吗? 多条件排序,我也很混乱...
create table t1 (title varchar(10),tags varchar(20))
insert t1
select 'abc','zxc,vbn,qwer' union all
select 'vbn','tyu,uio,vbn' union all
select 'vbn','tyu,uio,vbn' union all
select 'abc','abc,vbn,tyu' union all
select 'vbn','tyu,uio' union all
select 'vbn',null union all
select 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 vbn
abc zxc,vbn,qwer
vbn tyu,uio,vbn
vbn tyu,uio,vbn
abc abc,vbn,tyu
vbn tyu,uio
vbn NULL
*/
go
drop table t1是这样吗?
多条件排序,我也很混乱...