找关键字的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 @max=@q,@min=@p ELSE SELECT @max=@p,@min=@q WHILE @I<=len(@min) BEGIN IF charindex(substring(@min,@I,1),@max)>0 SET @Step=@Step+1 SET @I=@I+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