【问题标题】:Make MySQL LIKE Return Full Word matches Only使 MySQL LIKE 仅返回完整的单词匹配
【发布时间】:2014-12-08 21:53:26
【问题描述】:

我不希望返回 LIKE 匹配部分单词的行。我在空格上拆分字符串,然后生成一个查询,该查询将找到匹配项,但它返回部分单词的匹配项。这是一个例子

SELECT ID from VideoGames WHERE Title Like "%GI%" AND Title Like "%JOE%"

返回 title = "Yu-Gi-Oh! Power of Chaos: Joey the Passion" 的匹配项。

我知道只匹配完整的单词并不能完全解决问题,但它会大大提高准确性。我能做些什么来返回我想要的而不是这个。

【问题讨论】:

  • % 和实际单词之间添加` ` 空格,例如'% word %'?
  • 如果单词在字符串的末尾怎么办。 'GI JOE' 不会算 % JOE % 会吗?
  • 使用带有单词边界的正则表达式:dev.mysql.com/doc/refman/5.1/en/regexp.html

标签: mysql regex


【解决方案1】:

您可以使用RLIKELIKE 的正则表达式版本)来获得更大的匹配灵活性。

SELECT ID from VideoGames 
    WHERE Title RLIKE "[[:<:]]GI[[:>:]]" AND Title RLIKE "[[:<:]]JOE[[:>:]]"

[[:&lt;:]][[:&gt;:]] 标记是分别标记单词开头和和的单词边界。您可以构建单个正则表达式而不是 AND,但我已将此匹配您的原始问题。

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 2012-06-22
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2012-03-29
    相关资源
    最近更新 更多