选择超过 1 个 LIKE 的行

Selecting rows with more than 1 LIKE

我的问题是,我想创建一个简单的搜索引擎。 我已经通过使用 2 个查询让它工作。第一个搜索完整的搜索词,第二个搜索逐字搜索所有匹配项。 例如,如果您搜索 "The long lasting i don't know",那么它将搜索 "The long lasting i don't know",然后是 "The",然后是 "long",依此类推。

但是我想使用分页,它会弄乱结果,所以我需要在 1 个查询中使用它。 使用 IN 运算符可以实现吗?

您必须按照以下方式使用带有 OR 的个人点赞

select * from tablename where field like "%The long lasting i don't know%" or field like "%The%" or field like "%long%" or field like "%lasting%" or field like "%i%" or field like "%don't%" or field like "%know%"

参考这个 link Using SQL LIKE and IN together

我的回答在性能方面可能不是最佳的,但这是我的想法。

您只能逐字搜索(像“%The%”这样的列或像“%long%”这样的列等)。你一定会得到包含整个句子的结果。

然后,您可以一起订购

Order By Case When Column Like "The long lasting i don't know%" Then 1 Other 2 End

您可以尝试使用@jazkat 在Mysql Like multiple values

中所说的 REGEXP

您的查询是:

SELECT * FROM table WHERE column REGEXP "The long lasting i don't know|The|long|lasting|i|don't|know"

这里有更多关于 REGEXP 的信息:http://www.tutorialspoint.com/mysql/mysql-regexps.htm