2012-01-24 47 views
2
的替代方法

MySQL like子句允許通配符搜索,如'%keyword%'其中關鍵字夾在列值內。MySQL字符串模式匹配 - 類似於

進行模式匹配,其中關鍵字包含列值的一部分,當%keyword%將無法​​正常工作,我們可以使用INSTR函數來進行搜索。

例子:

Column="Apple" 
$keyword = "An Apple a day" 

在這裏,我們不能做Column like '%$keyword%'進行匹配,但(INSTR('$Keyword', Column)>0會做匹配。

有什麼替代方案(正則表達式?,全文搜索?,lucene?)我們有其他比INSTR模式匹配這種情況(例子?)嗎?

更新:

Column = "Golden Apple" 
$keyword = "An Apple a day" 

即使是這樣的樣品,我想可以,因爲他們有一個共同的術語「蘋果」,以配合柱的$關鍵字。

回答

1

在這種情況下,你仍然可以使用LIKE

'%$keyword%' LIKE CONCAT('%', Column, '%') 

或正則表達式:

'%$keyword%' REGEXP Column 
+0

如果Column =「Golden Apple」,這將不起作用。如果搜索詞和列都有一些匹配的字符,而不考慮位置,則會成爲問題。我會更新我的問題以反映這種情況。 –

+0

你的意思是你甚至想要'蘋果派'與'金蘋果'相匹配? –

+0

準確!我想匹配他們,如果他們有任何連續匹配字符的集合。 –

1

我並不清楚準確地瞭解你想做的事,但試試這個鏈接找到幫助有關pattern matching in mysql

你寫一個過程,觸發器,或只是一個選擇?

+0

我不關心觸發器或程序。假如你的要求是在問題的例子中將關鍵字與列值相匹配,你會怎麼做?一個簡單的類似條款不是解決方案,所以我正在尋找替代品。 –