php - 在mysql中获取记录 "Jone Deo"或 "Deo Jone"

标签 php mysql

如何在mysql中获取“Jone Deo”或“Deo Jone”的结果? 示例。

表名学生

ID------姓名

1--------琼·迪奥

2--------比尔·盖茨

现在,如果有人输入Deo JoneJone Deo,那么Jone Deo的记录将在mysql中搜索出来

我的网站上有搜索框。如果有人搜索“Jone Deo”或“Deo Jone”,我只需要上表的结果。 我不想使用 PHP 循环或爆炸函数。

最佳答案

您可能想尝试全文搜索:

 SELECT * FROM People WHERE MATCH (full_name)
    AGAINST ('+Doe +John' IN BOOLEAN MODE);

http://sqlfiddle.com/#!9/d21d4e/5

全文搜索解释:https://www.w3resource.com/mysql/mysql-full-text-search-functions.php

“全文搜索是使用 MATCH() ... AGAINST 语法执行的。MATCH() 采用逗号分隔的列表来命名要搜索的列。AGAINST 采用要搜索的字符串,以及一个可选的修饰符指示要执行的搜索类型。搜索字符串必须是在查询评估期间保持不变的字符串值。例如,这排除了表列,因为每行可能不同。”

简而言之,为了回答您的问题,您应该会看到通过在宽 VARCHAR 列上实现全文索引来缩短查询执行时间。假设您使用的是兼容的存储引擎(InnoDB 或 MyISAM)

关于php - 在mysql中获取记录 "Jone Deo"或 "Deo Jone",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394504/

相关文章:

php - 安全地更新证书颁发机构证书

php - 一项记录27次

php - 如果结果集为空,如何返回数据全部为NULL的行?

python - 如何减少我的 python 应用程序连接到 mysql 服务器的超时

php - 未捕获的 PDOException:PDO::__construct():php_network_getaddresses:getaddrinfo 失败:名称或服务未知

php - 在数组中添加引号并将其传递到 mysql 数据库的最佳方法是什么

php - 替换 {{a,b}} 和 {{a}} 的正则表达式

php - 在我的网站中使用 javascript(或 php)获取 Facebook 帖子/事件/新闻/画廊

php - 无法找出简单 PHP/MySQL "Q&A"DB 中的错误

mysql - 如何在 mysql 中从 datediff 结果中添加或减去分钟