日期:2014-05-19  浏览次数:20497 次

请教高手.这样的搜索查询,应该怎么做?

----------------------
商店名称                         提供产品
小A水果店                       "苹果,香蕉,葡萄,雪梨,芒果,西瓜 "...
小B水果店                       "香蕉,葡萄,西瓜 "...
小C水果店                       "榴莲,猕猴桃 "...
----------------------
需求,当客户输入以下条件,搜索时,能找到能提供对应产品的商家.(注:必须严格满足条件)
1. "西瓜,香蕉 "
2. "雪梨,苹果 "
3. "葡萄 "
...
如:小A水果店,虽然提供 "西瓜和香蕉 ",但因为客户的输入顺序和字段里存放的不同,用普通LIKE,解决不了这个问题.

请问,为实现类似查询,应该怎么做?

另外,以上问题是我自己虚构的,我的实际需求有些类似.

请大家帮忙,谢谢!

------解决方案--------------------
try

Declare @提供产品 Nvarchar(100)
Select @提供产品 = N '西瓜,香蕉 '
Select * From 表 Where ', ' + 提供产品 + ', ' Like '% ' + @提供产品 + '% '
------解决方案--------------------
改改表结构
----------------------
商店名称 提供产品
小A水果店 苹果
小A水果店 香蕉
……
------解决方案--------------------
declare @tb table(
name varchar(10),
type varchar(50)
)
insert into @tb select 'a ', '苹果,香瓜,葡萄,桔子,椰子 '
union all select 'b ', '西瓜,苹果,桃子,桔子,葡萄 '
union all select 'c ', '香蕉,苹果,葡萄,桔子,甘蔗,桃子 '
select * from @tb
select name
from @tb
where type like '%苹果% ' and type like '%桃子% '