2015-11-01 57 views
2

我正在搜索一个按多行搜索SQL表。例如:用PHP/MySQL按空格搜索多行

| FirstName | LastName | 
|----------------------| 
| John  | Doe  | 
|----------------------| 

SELECT FirstName,LastName FROM Users WHERE FirstName LIKE '%inputhere%' OR LastName LIKE '%inputhere%' LIMIT 10

当我搜索一个完整的域名(例如John Doe)没有结果出现,因为没有人行都有价值。

我有一种方法来分隔搜索查询的空间,以避免这种情况?

+0

调查全文索引。这可能是你想要做的最好的解决方案。 –

回答

2

与Gordon所说的类似,最好的解决方案是使用全文索引。然而,你可以这样说:

Select * from Users where concat(FirstName, " ", LastName) like "John Doe" 

你可以随意把"John Doe""%John Doe%""John Doe%"

尝试在这里: http://sqlfiddle.com/#!9/d0042/5/0

1

你想要什么的最佳解决方案是全文索引。但是,您可能能够完成你想要的是这样的:

where concat_ws(' ', firstname, lastname) like concat('%', replace($inputhere, ' ', '%'), '%') or 
     concat_ws(' ', lastname, firstname) like concat('%', replace($inputhere, ' ', '%'), '%') 

这是蛮力,需要为每个查询全表扫描(这是正常的小表)。