表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          春暖花开求高手!

解决方案 »

  1.   

     select   *   From   topic   where   title   like   '%上%海%花% '
      

  2.   

    select   *   From   topic   where   title   like   '%上% ' or title like '%海%' or title like '%花%'
      

  3.   

    不要用like,用patindex试试
    select ...from topic where patindex('%[上],[海],[花]%',title)>0
      

  4.   

    select * from topic where title like '%上海%' or title like '%花%';
      

  5.   

    类似于分词?
    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 
    AS
    BEGIN
        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 
    END
    GO 
    DECLARE @a varchar(100)
    SET @a='湖南科技'
    SELECT * FROM atest WHERE dbo.getss(@a,qy)=1
    SET @a='广州广橡集团有限公司双一乳胶厂'
    SELECT * FROM atest WHERE dbo.getss(@a,qy)=1--result
    /*id          qy                             
    ----------- ------------------------------ 
    2           湖南金博科技有限责任公司(所影响的行数为 1 行)id          qy                             
    ----------- ------------------------------ 
    1           广州双一乳胶(所影响的行数为 1 行)*/
      

  6.   

    select * From topic where title like '%[上海花]%'
      

  7.   

    select * From topic where title like '%[上海花]%'
      

  8.   

    建议,这个东西拿全文索引来做。用like做效率太低了