日期:2014-05-18  浏览次数:20680 次

数据搜索超难问题
这样一个表:

A           B             C
100       长虹       A8977
102       海信       Abdki
102       长虹       Gdkg
103       长虹       液晶39
104       长虹       新款液晶41


如何能实现以下类似搜索的功能

比如查:长虹彩电
结果:
A           B             C
100       长虹       A8977
102       长虹       Gdkg
103       长虹       液晶39
104       长虹       新款液晶41

比如查:长虹液晶
结果:
比如查:长虹彩电
103       长虹       液晶39
104       长虹       新款液晶41


意思就是能实现像搜索引擎那样的类似搜索功能,跪求!

------解决方案--------------------
--原始数据:#Test
create table #Test(A int,B varchar(4),C varchar(10))
insert #Test
select 100, '长虹 ', 'A8977 ' union all
select 102, '海信 ', 'Abdki ' union all
select 102, '长虹 ', 'Gdkg ' union all
select 103, '长虹 ', '液晶39 ' union all
select 104, '长虹 ', '新款液晶41 '

--创建关键字典——需要定期手工添加、维护。
create table #Key(KW varchar(1000),TB sysname,Search varchar(1000))
insert #Key select '长虹,长虹彩电 ', '#Test ', 'B= ' '长虹 ' ' '
insert #Key select '长虹液晶,长虹液晶电视 ', '#Test ', 'B= ' '长虹 ' ' and C like ' '%液晶% ' ' '

declare @KW varchar(100),@sql varchar(1000)

select @KW= '长虹彩电 ',@sql=null
select top 1 @sql= 'select * from '+TB+ ' where '+Search from #Key where charindex(@KW,KW)> 0
exec (@sql)
/*
A B C
100 长虹 A8977
102 长虹 Gdkg
103 长虹 液晶39
104 长虹 新款液晶41
*/

select @KW= '长虹液晶 ',@sql=null
select top 1 @sql= 'select * from '+TB+ ' where '+Search from #Key where charindex(@KW,KW)> 0
exec (@sql)
/*
A B C
103 长虹 液晶39
104 长虹 新款液晶41
*/

--删除对象
drop table #Test,#Key