2016-12-06 149 views
1

我期待創建一個正則表達式來搜索mysql列,並且我希望重要的命令。MySQL多字搜索正則表達式

select * from tapes 
where title like '%pod%' and title like '% b%' and title like '% si%' ; 

這將返回

"Pod Blind Sight" 

"Pod Steve Blake" 

我只想要返回的第一個結果。目的是當用戶搜索「pod b s」時,只返回最高結果。我如何寫一個正則表達式來實現呢?

+1

'WHERE標題REGEXP'pod。* b。* si''或'[[:<:]] pod。* b。* si'' –

+0

補充說,作爲答案和生病給你的觀點! –

+0

作爲解答添加了一些解釋。 –

回答

0

您可以使用.*零個或多個任意字符)的這些值之間在這個特定的順序,以匹配:

WHERE title REGEXP 'pod.* b.* si' 

注意你不需要在開始或結束時添加.*的模式爲REGEXP發現部分比賽。

或者,如果pod只能在一個單詞的開頭時匹配,在前面加上[[:<:]]模式:

WHERE title REGEXP '[[:<:]]pod.* b.* si' 

記住,MySQL的REGEXP的情況下,在默認情況下不區分大小寫,添加BINARY關鍵字使其區分大小寫。

0

這將實現問題,如當前所述

LIKE 'Pod% b% s%' 

你要什麼有

"The Pod Blind Sight" 
"Pod (Blind) Sight" 

和許多其他的可能性發生?