我们如何在mysql中获得“Jone Deo”或“Deo Jone”的结果?
例子。

表名学生

身份证------姓名

1-------钟德奥

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

现在,如果有人输入 Deo Jone Jone 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/

10-13 02:35