2016-12-06 102 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" 

和许多其他的可能性发生?