当前位置: 代码迷 >> Sql Server >> 觅关键字的SQL查询,有点难度
  详细解决方案

觅关键字的SQL查询,有点难度

热度:65   发布时间:2016-04-27 10:46:15.0
找关键字的SQL查询,有点难度
我在数据库里有

SQL code
表:class字段:id    qy 1    广州双一乳胶 2    湖南金博科技有限责任公司



现在需求是:

当我输入“广州广橡集团有限公司双一乳胶厂”时能在SQL里查询到“广州双一乳胶”

当我输入“湖南科技” 能在SQL里查询到“湖南金博科技有限责任公司”


不知道我说明白没有

------解决方案--------------------
明白是明白了,这个确实不简单,涉及分词技术。
------解决方案--------------------
分词,不好做
------解决方案--------------------
这里有个例子,看看:http://blog.sina.com.cn/s/blog_477cf8ad010007kj.html
------解决方案--------------------
SQL code
CREATE TABLE atest(id INT,   qy varchar(100))INSERT atest select 1    ,'广州双一乳胶'UNION ALL SELECT  2    ,'湖南金博科技有限责任公司'GO CREATE FUNCTION GetSS(@p varchar(100),@q varchar(100))RETURNS BIT ASBEGIN    DECLARE @min varchar(100),@max varchar(100)    DECLARE @I INT,@Step INT     DECLARE @r BIT     SET @r=0        SELECT @I=1,@Step=0     IF len(@p)<len(@q)         SELECT @[email protected],@[email protected]    ELSE         SELECT @[email protected],@[email protected]        WHILE @I<=len(@min)    BEGIN        IF charindex(substring(@min,@I,1),@max)>0            SET @[email protected]+1        SET @[email protected]+1    END    IF @Step<>0 AND @Step>=len(@min)/2        SET @r=1    RETURN @r ENDGO DECLARE @a varchar(100)SET @a='湖南科技'SELECT * FROM atest WHERE dbo.getss(@a,qy)=1SET @a='广州广橡集团有限公司双一乳胶厂'SELECT * FROM atest WHERE dbo.getss(@a,qy)=1--result/*id          qy                             ----------- ------------------------------ 2           湖南金博科技有限责任公司(所影响的行数为 1 行)id          qy                             ----------- ------------------------------ 1           广州双一乳胶(所影响的行数为 1 行)*/
------解决方案--------------------
SQL code
IF @Step<>0 AND @Step>=len(@min)/2        SET @r=1    RETURN @r
  相关解决方案