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"?
如果您的数据库表引擎是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:CONCAT在WHERE子句中重复(因为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)
| 归档时间: |
|
| 查看次数: |
9295 次 |
| 最近记录: |