【发布时间】:2011-02-28 04:28:41
【问题描述】:
我目前正在进行实时搜索,我需要能够在两列中找到名称的一部分(我们需要将名字和姓氏分开)。我个人希望命令简短,但是我能够让它工作的唯一方法是:
用户搜索
John Doe
生成的 SQL 查询
SELECT * FROM users WHERE
(first_name LIKE '%john%' OR last_name LIKE '%john%') AND
(last_name LIKE '%doe%' OR last_name LIKE '%doe%');
搜索字段是一个框,所以我用空格做了一些简单的分隔。大多数情况下,这不会超出三组子句,只是想知道是否有更好的方法来做到这一点。
注意: 我希望能够进行部分匹配。所以如果我寻找“John Do”,我应该能够找到 John Doe
解决方案 然而,在 Rolando 的帮助下,我确实想出了一个解决方案,并发布给其他发现此问题的人。按照他关于如何在下面创建索引的说明,然后运行:
SELECT * FROM users WHERE
(MATCH(first,last) AGAINST ('+john* +do*' IN BOOLEAN MODE))
【问题讨论】:
-
感谢您的信任投票!!!
标签: mysql search wildcard where-clause