数据库 - 最好的方法,如何搜索名称

use*_*705 4 mysql database search

我在以下几种情况下解决了这个问题:在我的数据库表中,我有名字和姓氏的列.

在我的页面上,我有搜索人员的输入,我正在努力解决一个问题,如何在数据库中搜索存储在两列中的名称,并将名称作为字符串("Joe Green").

例如,在数据库中我有以下内容:

Joe New
Joe Blue
Joe Green
Joe Francois Green
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法,如何解决这个问题?我目前正在使用MySQL数据库和Rails 3.

编辑:谢谢大家的回复,但我不知道,如何在Rails 3表示法中进行查询,是否可以使用"concat"?

diE*_*cho 6

如果您的数据库表引擎是myISAM,那么使用FULLTEXT搜索

首先创建FULLTEXT索引

CREATE FULLTEXT INDEX fx_name ON pages (name, surname)
Run Code Online (Sandbox Code Playgroud)

然后使用下面的查询来检索所需的数据

SELECT  *
FROM    table
WHERE   MATCH(name,surname) AGAINST ('keyword' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

更新

替代方案:用 CONCAT

首先创建索引

CREATE INDEX users_firstandlast ON users(name, surname);
Run Code Online (Sandbox Code Playgroud)

option1:CONCATWHERE子句中重复(因为AS不会创建可在WHERE子句中使用的名称):

SELECT CONCAT(name, ' ', surname) as fullname 
FROM users 
WHERE CONCAT(name, ' ', surname) LIKE '%joe green%';
Run Code Online (Sandbox Code Playgroud)

选项2:

SELECT CONCAT(name, ' ', surname) as fullname 
FROM users 
WHERE name LIKE '%joegreen%' or surname LIKE '%joegreen%';
Run Code Online (Sandbox Code Playgroud)

更多信息