根据where子句选择行时,如何匹配完整的单词?

时间:2013-04-13 23:27:49

标签: php mysql search sql-like

我正在尝试为网站创建搜索功能。 在MySQL中我想完全匹配单词,例如,如果我有几个帖子与这些标题:

  

某一天

  

即将来临的一天

我有以下搜索字符串:

SELECT title
        FROM posts
        WHERE title LIKE '%in%'
        ORDER BY Date
        DESC

它会返回两行,因为LIKE字词%in%会显示在第一行的in和第二行的coming中。

但我只希望它匹配整个单词,以便只返回第一行。

这可能吗?

2 个答案:

答案 0 :(得分:1)

您正在寻找MySQL字边界REGEXP:

SELECT title
  FROM posts
  WHERE title REGEXP '[[:<:]]in[[:>:]]'

来自MySQL文档:

这些标记代表字边界。它们分别匹配单词的开头和结尾。单词是一系列单词字符,其前面或后面没有单词字符。

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

答案 1 :(得分:0)

这样做:

SELECT title
    FROM posts
    WHERE title LIKE '% in %'
    ORDER BY Date
    DESC

如果这是一个单词,你确定在有问题的单词之前和之后都有空格。