简体   繁体   English

MySQL查询按一组空格分隔的值进行搜索

[英]MySQL query for search by set of space separated values

I've got a sample table: 我有一个样本表:

Firstname Lastname Company  Age
Peter     Johnson  Google   28
John      Wayne    Yahoo    30

I need to write a MySQL query which performs search through set of values separated by space. 我需要编写一个MySQL查询,该查询通过用空格分隔的一组值执行搜索。 Like this: 像这样:

Exec find_records 'Bill Johnson Google 30';

Query should return: 查询应返回:

Firstname Lastname  Company  Age
Peter     Johnson   Google
John      Wayne     Yahoo 

Will appreciate any ideas! 将不胜感激任何想法! Thanks! 谢谢!

If you are using a MyISAM table you could add a fulltext index on the columns relevant to the search and query with: 如果使用的是MyISAM表,则可以使用以下命令在与搜索和查询相关的列上添加全文索引:

SELECT
  firstname,
  lastname,
  company,
  age,
  MATCH(firstname, lastname, company, age) AGAINST('Bill Johnson Google 30') as rank
FROM
  your_table
HAVING
  rank > 0
ORDER BY
  rank DESC

SQLFiddle SQLFiddle

select *
from t
where 
FIND_IN_SET(FirstName,REPLACE('Bill Johnson Google 30',' ',','))>0
or
FIND_IN_SET(Lastname,REPLACE('Bill Johnson Google 30',' ',','))>0
or
FIND_IN_SET(Company,REPLACE('Bill Johnson Google 30',' ',','))>0
or 
FIND_IN_SET(Age,REPLACE('Bill Johnson Google 30',' ',','))>0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM