MySQL 查询过滤包含搜索字符串中任何单词的记录

标签 mysql boolean match mode against

我必须开发一个简单的搜索页面,将搜索字符串与 MySQL 表中的字段相匹配。

假设数据库表是“records”,考虑的字段是“record_title”。还要说以下是行中的“record_titles”。

字1字2
字1 字3 字4
字5 字2 字1
词6

现在在搜索表单中,假设用户提交搜索词,例如“word1 word7”、“word1”、“word1 word5”、“word1 word2”等,它应该返回包含搜索词中至少一个单词的记录标题。它不应该将搜索字符串作为子字符串,例如,如果搜索词是“word”,它不应该返回上述记录集中的任何记录。

我尝试使用以下内容,但有时它不匹配单个单词。

MATCH(`recordTitle`) AGAINST ('+word1 +word2' IN BOOLEAN MODE);

如何使用它(或其他解决方案)来选择包含至少一个单词匹配的记录。

谢谢。

GUIR

最佳答案

其实你可以使用sql in操作符 - http://www.w3schools.com/sql/sql_in.asp 以及 php implode 函数,用于创建要在 sql 字符串中使用的数组的逗号分隔字符串。

$searchArr = implode(', ', $arraySearch); 
$sql = "select * from records where record_title in ($searchArr);"; 

关于MySQL 查询过滤包含搜索字符串中任何单词的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830294/

相关文章:

mysql - "Where IN"子句的 MariaDB 性能问题

mysql - 是否有一个好的 DSL 可以独立于任何特定的 Web 框架来操作 MySQL 脚本?

mysql - Access 是否允许附加 ODBC 表的富文本格式?

c++ - boolean 数组的求和速度

c++ - 强制值为 boolean 值 : (bool) makes warning, !!没有

javascript - 与正则表达式匹配

java - 如何从MySQL表中删除所有数据并用新数据填充表

c - 为什么我的 if else 语句没有显示其中一个条件的结果?

r - 是否有 R 函数在另一个向量中查找向量?

用于匹配 #<string>vs<string> 的 Java 正则表达式