读书人

t-sql 偏题 求高手

发布时间: 2012-08-14 10:39:57 作者: rapoo

t-sql 难题 求高手
表topoic
字段
id title
1 2010上海世博会
2 上面那棵树
3 面朝大海,春暖花开
3 春暖花开


现在模糊查询表topic select * From topic where title like '%上海% '得到的结果是
id title
1 2010上海世博会

现在我需要根据模糊查询的字一个一个的匹配,比如查询“上海花”则在列表中搜索title为“上” 或者“海”或者“花”的记录 结果为:
id title
1 2010上海世博会
2 上面那棵树
3 面朝大海,春暖花开
3 春暖花开

求高手!

[解决办法]

SQL code
 select   *   From   topic   where   title   like   '%上%海%花% '
[解决办法]
select * From topic where title like '%上% ' or title like '%海%' or title like '%花%'
[解决办法]
#2
+1
[解决办法]
顶#1,忽视#2
[解决办法]
不要用like,用patindex试试
select ...from topic where patindex('%[上],[海],[花]%',title)>0
[解决办法]
select * from topic where title like '%上海%' or title like '%花%';
[解决办法]
网速太慢。。。无语。。。
[解决办法]
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 Server

热点推荐