我正在寻找创建一个正则表达式来搜索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”进行搜索时,仅返回顶部结果。我该如何编写正则表达式来实现这一目标?

最佳答案

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

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


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

或者,如果pod仅在单词开头时才必须匹配,则在模式前加上[[:<:]]

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


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

关于mysql - MySQL多词搜索正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41000067/

10-14 15:11
查看更多