当前位置: 代码迷 >> ASP.NET >> 存储过程,呀,怎么多项查找.人来!
  详细解决方案

存储过程,呀,怎么多项查找.人来!

热度:4529   发布时间:2013-02-26 00:00:00.0
求一个存储过程,急呀,如何多项查找.......................................人来!!
比如有张表table
p_id     p_name  
1             发烧,高热            
2             发烧,高热,无聊        
3             很无聊    

我查询       "发烧,高热 "的时候   点击     在datagrid中显示2条纪录.......    



------解决方案--------------------------------------------------------
有没有词库?分词了
------解决方案--------------------------------------------------------
那要拆分了,你要实现的强大的话,那就成分词了..
------解决方案--------------------------------------------------------
你不能保证发烧高热这两个词肯定是连在一起的吧,假如有一条是发烧,无聊,高热,那你输入发烧高热是否要挑选出来呢?
------解决方案--------------------------------------------------------
CREATE PROCEDURE SEL_return
@VALUE NVARCHAR(4000),
AS
SELECT * FROM Table where CHARINDEX(p_name,@VALUE )> 0 OR CHARINDEX(@VALUE,p_name )> 0

执行时 execute SEL_return N '发烧高热 '
------解决方案--------------------------------------------------------
这个从你要实现的功能上来看,只是存储过程是实现不了了.要有词库,那就话多了,呵呵..
------解决方案--------------------------------------------------------
那说明你考虑的还不够全,他是以词来分,还是以字来分,这个不是一两句话能说的清,例如 '发明,烧酒,高大,热血 ',也有发烧高热这四个字,那你是否要挑选出来呢?
------解决方案--------------------------------------------------------
就是汉字的词库,就象汉语词典,里面包含一些常用的词.
------解决方案--------------------------------------------------------
分词一般都是做搜索引擎用的,你可以看一下百度,google.这可不是简单的事情,有一定的难度,你考虑好了哦...
------解决方案--------------------------------------------------------
要求前台输入做一定的格式限制,来区分关键字。

如“一 二”,以空格来区分有两个关键字,在用关键字进行“与”\“或”匹配,看你的要求。
------解决方案--------------------------------------------------------
用","把条件分开,查询出来,可以使用存储过程,也可以使用动态sql
------解决方案--------------------------------------------------------
这样,假如不分词的话,效率会极差.根本不使用..
  相关解决方案