日期:2014-05-17  浏览次数:20815 次

搜索时,怎么实现含有的排前面,不含有的排后面
ID                 A                             B
1                   电视机                   电视机的用途
2                   电脑                       有电视机
3                   电视眼                   电脑配件
4                   电脑配件               电脑配件

搜索 "电视 "时结果如下
ID                 A                             B
1                   电视机                   电视机的用途
3                   电视眼                   电脑配件
2                   电脑                       有电视机
4                   电脑配件               电脑配件

首先匹配A中是否含有,含有的排最前面,不含有的再匹配B字段是否含有关键字.




------解决方案--------------------
/*
ID A B
1 电视机 电视机的用途
2 电脑 有电视机
3 电视眼 电脑配件
4 电脑配件 电脑配件
*/
--创建测试表
declare @t table(id int ,A varchar(50),B varchar(50))
insert @t select 1, '电视机 ', '电视机的用途 '
insert @t select 2, '电脑 ', '有电视机 '
insert @t select 3, '电视眼 ', '电脑配件 '
insert @t select 4, '电脑配件 ', '电脑配件 '


---一句查询-----
select * from @t
where A like '%电视% ' or B like '%电视% '
order by (len(A)-len(replace(A, '电视 ', ' '))) desc,
len(B)-len(replace(B, '电视 ', ' ')) desc