首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

搜索时,如何实现含有的排前面,不含有的排后面

2012-02-02 
搜索时,怎么实现含有的排前面,不含有的排后面IDAB1电视机电视机的用途2电脑有电视机3电视眼电脑配件4电脑

搜索时,怎么实现含有的排前面,不含有的排后面
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

热点排行