【问题标题】:MySQL Multiple word search regular expressionMySQL 多词搜索正则表达式
【发布时间】:2016-12-06 16:20:56
【问题描述】:

我正在寻找创建一个正则表达式来搜索 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''[[:<:]]pod.* b.* si'
  • 将其添加为答案,我会给你加分!
  • 作为答案添加了一些解释。

标签: mysql regex


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

    这将解决问题目前所说的

    LIKE 'Pod% b% s%'
    

    你想做什么

    "The Pod Blind Sight"
    "Pod (Blind) Sight"
    

    还有许多其他的可能性?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2020-01-25
      • 2012-03-10
      • 2012-02-23
      • 1970-01-01
      相关资源
      最近更新 更多