MySQL查询:搜索关键字,如%function

时间:2015-05-06 07:26:32

标签: mysql string keyword

我的数据库中有foo关键字。但现在我想像这样搜索

 Select id from table where name like '%foo function%'

像这样的数据

-----------------
|id  |name   |
-----------------
|1   |foo    |
|2   |sourc  |
--------------

现在我想要" foo功能"字符串有" foo"匹配数据库" foo"结果请告诉我该怎么做。

3 个答案:

答案 0 :(得分:3)

狂野的猜测,但也许你想要相反的喜欢:

Select id from table where 'foo function' like '%' || name || '%'

||是ANSI SQL串联。有些dbms改为concat('%', name, '%'),或'%' + name + '%'

答案 1 :(得分:0)

我能理解的是,即使你键入“foo function”,你也应该得到foo结果。 如果这是你正在寻找的,那么你必须像(在mysql中)

那样编写它
insert ignore

否则你必须像solr一样实现搜索引擎,为你提供模糊搜索和其他功能

答案 2 :(得分:0)

试试这个

功能

   CREATE  FUNCTION [dbo].[fn_Split](@text varchar(8000), @delimiter varchar(20))
    RETURNS @Strings TABLE
    (   
      position int IDENTITY PRIMARY KEY,
      value varchar(8000)  
    )
    AS
    BEGIN

    DECLARE @index int
    SET @index = -1

    WHILE (LEN(@text) > 0)
      BEGIN 
        SET @index = CHARINDEX(@delimiter , @text) 
        IF (@index = 0) AND (LEN(@text) > 0) 
          BEGIN  
            INSERT INTO @Strings VALUES (@text)
              BREAK 
          END 
        IF (@index > 1) 
          BEGIN  
            INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))  
            SET @text = RIGHT(@text, (LEN(@text) - @index)) 
          END 
        ELSE
          SET @text = RIGHT(@text, (LEN(@text) - @index))
        END
      RETURN
    END

查询

 Select id from table inner join (select value from fn_split('foo function',' '))
as split_table on table.name like '%'+split_table.value+'%';