我正在寻找创建一个正则表达式来搜索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/