2015-06-18 20 views
0

使用像在其中,我根據文章的標題尋找結果的查詢,我用的是跟着LIKE部分:在SQL查詢

WHERE title LIKE %searchquery% 

在我的數據庫中的一個標題是這樣的:

Economy in America 

我的問題:

從我目前的查詢,這個稱號確實可以上市,當用戶輸入以下SEARCHQUERY:

america economy 

當用戶只輸入其中一個條款時,一切正常,標題被列出。

怎麼回事?

如何調整我的查詢,以便我的sql查詢也可以在用戶輸入多個術語時起作用?

+0

如果同一列中的詞條越多,則可以嘗試用%符號替換所有空格,例如:'WHERE title LIKE%america%economy%' – kayess

+0

您使用哪種語言? –

+0

MySQL與MySQL。使用「AND」工作。但是當用戶輸入錯字時,例如當他輸入「amrica economy」或「america ecnomy」時,該標題不會被顯示出來......我怎樣才能考慮出現輸入錯誤的拼寫錯誤? – Max

回答

1

MySQL LIKE運算符是有限的,因爲它不提供您真正查找的排序的完整正則表達式支持。也就是說,您可以嘗試的一種方法是拆分搜索查詢條件,然後使用AND加入多個LIKE條件。考慮下面這個例子:

WHERE title LIKE %queryterm1% AND LIKE %queryterm2% 

如果queryterm1'america'queryterm2'economy',那麼這將匹配標題'Economy in America'

+0

這個工程,謝謝。但是當用戶輸入錯字時,例如當他輸入「amrica economy」或「america ecnomy」時,該標題不會被顯示出來......我怎樣才能考慮出現輸入錯誤的拼寫錯誤? – Max

+0

有沒有簡單的方法來與MySQL AFAIK做到這一點。看看[這裏](https://gordonlesti.com/fuzzy-fulltext-search-with-mysql/)這篇文章會讓你開始思考這個具有挑戰性的問題。 –

0

您將需要通過空格分割的查詢,然後添加多個LIKE語句是這樣的:

WHERE title LIKE '%america%' AND title LIKE '%economy%' 
0

由於@Tim說,你必須寫一些日常的應用程序來劃分串術語和它們注入在select where條款中。或者您可能需要爲此編寫一些存儲過程。