2016-05-14 138 views
0

如果我有一個表files,它有一個列title,有的標題的都是這種格式:搜尋有特殊字符

google: and facebook 
stack: overflow 

現在,我想在添加搜索功能,我應用程序,它執行LIKE '%word%'查詢。但是,如果人們搜索google and facebook它不會找到任何東西,除非他們專門搜索google: and facebook。 我知道LIKE做,爲什麼它不給我找的結果,我只是詢問是否有辦法在MySQL表進行搜索,而忽略特殊字符像: ' - . , "

感謝。

+0

比較前使用REPLACE函數。 ... REPLACE(fieldname,':','')LIKE%word% – smozgur

+0

你應該更清楚地發佈你的問題,用戶不知道你的數據究竟是什麼樣的,即使你忽略了特殊的字符,他們可能會再輸入一個空格像'谷歌和臉譜'或沒有'和'像'谷歌臉譜'。所以即使'replace'或'REGEXP'也能給出你現在想要的,但你也永遠不知道用戶會輸入什麼來搜索。 – Blank

+0

我知道,我只是特意詢問特殊字符,因爲我多次面對這個問題。 – Yakirbu

回答

1

比較前使用REPLACE功能。

... REPLACE(fieldname, ':', '') LIKE %word% 
+0

謝謝。如您所說,這不適合大型數據集,但在我的情況下就足夠了。 – Yakirbu

0

您可以使用正則表達式工作

MYSQL Manual

+0

爲什麼他需要5.7或更高版本?MySQL已經有很長一段時間的正則表達式 – Barmar

+0

如果你展示了一個例子,他可以將他的'L​​IKE'改爲合適的正則表達式,那麼這會更好一些 – Barmar

+0

然後他正在使用我爲他製作的表達,明天他需要另一個表達,因爲他發現了更多的問題,並再次提出要求:)我認爲我們的工作不是讓我們在銀盤上給出答案,而是向他展示他可以解決問題的工具。 –

0

另一種方法是,以取代所有空格用「%」搜索字符串或者爆炸的搜索字符串(空間分隔符號),並且不同部位與連接一個OR語句。