我正在寻找创建一个正则表达式来搜索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来达到这个目标?
答案 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"
以及其他许多可能性?