MySQL多字搜索正则表达式

时间:2016-12-06 16:20:57

标签: mysql regex

我正在寻找创建一个正则表达式来搜索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”进行搜索时,仅返回最高结果。我如何写一个常规的expressoin来达到这个目标?

2 个答案:

答案 0 :(得分:0)

您可以在这些值之间使用.*零次或多次出现任何字符)以按此特定顺序进行匹配:

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

请注意,您无需在模式的开头或结尾添加.*,因为REGEXP找到部分匹配。

或者,如果pod只能在单词的开头匹配,请在模式前添加[[:<:]]

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

请记住,MySQL REGEXP默认情况下不区分大小写,添加BINARY关键字以使其区分大小写。

答案 1 :(得分:0)

这将解决目前所述的问题

LIKE 'Pod% b% s%'

你想要发生什么?
"The Pod Blind Sight"
"Pod (Blind) Sight"

以及其他许多可能性?