我这几天正在解决以下情况: 在我的数据库表中,我有姓名列。
在我的页面上,我有用于搜索人员的输入,我正在努力解决一个问题,如何在数据库中搜索存储在两列中的名称,我将名称作为字符串 ("Joe Green"
)。
例如,在数据库中我有以下内容:
Joe New
Joe Blue
Joe Green
Joe Francois Green
最好的办法是什么,这个问题怎么解决?我目前正在使用 MySQL 数据库和 Rails 3。
编辑:谢谢你们的回复,但我不知道如何用 Rails 3 表示法进行查询,是否可以使用“concat”?
最佳答案
如果你的数据库表引擎是myISAM那么使用 FULLTEXT search
首先创建FULLTEXT索引
CREATE FULLTEXT INDEX fx_name ON pages (name, surname)
然后使用下面的查询来检索所需的数据
SELECT *
FROM table
WHERE MATCH(name,surname) AGAINST ('keyword' IN BOOLEAN MODE)
更新
备选方案:使用 CONCAT
首先创建索引
CREATE INDEX users_firstandlast ON users(name, surname);
选项 1: 在您的 WHERE
子句中重复 CONCAT
(因为 AS 不会创建您可以在 WHERE 子句中使用的名称) :
SELECT CONCAT(name, ' ', surname) as fullname
FROM users
WHERE CONCAT(name, ' ', surname) LIKE '%joe green%';
选项 2:
SELECT CONCAT(name, ' ', surname) as fullname
FROM users
WHERE name LIKE '%joegreen%' or surname LIKE '%joegreen%';
关于mysql - 数据库 - 最好的方法,如何搜索名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6826736/