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

标签 mysql database search

我这几天正在解决以下情况: 在我的数据库表中,我有姓名列。

在我的页面上,我有用于搜索人员的输入,我正在努力解决一个问题,如何在数据库中搜索存储在两列中的名称,我将名称作为字符串 ("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%';

More information

关于mysql - 数据库 - 最好的方法,如何搜索名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6826736/

相关文章:

php - 在 PHP 中将 SQL 结果作为嵌套数组获取

php - 截断表中除第一个列之外的所有 MySQL 列

mysql - 插入后触发"where in"

Mysql查询从Purchase_history表中查找购买商品的最后交易日期

python - 将 Django 与 Docker 一起使用时出错 - "Can' t 连接到 '127.0.0.1' (111) 上的 MySQL 服务器"

linux - 尝试使用 grep 查找内容,然后输出该行的不同部分

mysql - 关于查询的格式

php - 如何从数据库中的表中获取所有数据并使用 php 显示它?

mysql - 如何在mysql中搜索多分类

php - Jquery/Mysql : use mysql data for Auto Complete search tags in jquery?