MySQL query : 搜索关键词 like % function

MySQL query : search keyword like % function

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

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

这样的数据表

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

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

胡乱猜测,但也许您想要相反的 LIKE:

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

|| 是 ANSI SQL 连接。有些 dbms 有 concat('%', name, '%'),或者 '%' + name + '%'.

我能理解的是,即使您键入 "foo function",您也应该得到 foo 结果。 如果那是你要找的东西,那么你必须这样写(in mysql)

name1=foo
name2=function

Select id from table where name like (concat('%',name1,'%') or      
concat('%',name2,'%'));

否则你将不得不实现像 solr 这样的搜索引擎,它为你提供模糊搜索和其他功能

试试这个

函数

   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+'%';