我在我的数据库中有foo关键字。但现在我想寻找这样MySQL查询:像%功能一样搜索关键字
Select id from table where name like '%foo function%'
数据表这样
-----------------
|id |name |
-----------------
|1 |foo |
|2 |sourc |
--------------
现在我想“富功能”的字符串,有“富”比赛进行到数据库“富”的结果,请告诉我怎么做。
我在我的数据库中有foo关键字。但现在我想寻找这样MySQL查询:像%功能一样搜索关键字
Select id from table where name like '%foo function%'
数据表这样
-----------------
|id |name |
-----------------
|1 |foo |
|2 |sourc |
--------------
现在我想“富功能”的字符串,有“富”比赛进行到数据库“富”的结果,请告诉我怎么做。
胡乱猜测,但也许你想相反,如:
Select id from table where 'foo function' like '%' || name || '%'
||
是ANSI SQL级联。一些dbms改为concat('%', name, '%')
,或者'%' + name + '%'
。
我能理解的是,即使你输入“foo function”,你也应该得到foo的结果。 如果这是你必须把它写像(在MySQL)
name1=foo
name2=function
Select id from table where name like (concat('%',name1,'%') or
concat('%',name2,'%'));
否则你将不得不implemet搜索引擎喜欢的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+'%';
实际上很难理解你在问什么。你可以请添加一些示例表格数据和预期结果。 – jarlh
请检查我添加它。 –