2015-11-01 56 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, ' ', '%'), '%') 

這是蠻力,需要爲每個查詢全表掃描(這是正常的小表)。