我的数据库中有foo关键字。但现在我想像这样搜索
Select id from table where name like '%foo function%'
像这样的数据
-----------------
|id |name |
-----------------
|1 |foo |
|2 |sourc |
--------------
现在我想要" foo功能"字符串有" foo"匹配数据库" foo"结果请告诉我该怎么做。
答案 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+'%';