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

标签 php mysql search sql-like

我正在尝试为网站创建搜索功能。 在 MySQL 中,我想精确匹配单词,例如,如果我有几篇文章的标题是这样的:

A day in time

A coming day

我有以下搜索字符串:

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

它将返回两行,因为 LIKE%in% 出现在第一行的 incoming 在第二行。

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

这可能吗?

最佳答案

您正在寻找 MySQL 字边界 REGEXP:

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

来自 MySQL 文档:

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

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

关于php - 根据 where 子句选择行时,如何匹配完整的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994060/

相关文章:

php - 当 WP_DEBUG_LOG 设置为 true 时,debug.log 中没有显示调试输出,为什么?

php - Doctrine循环使用太多内存,非常慢

php - fatal error :调用未定义函数mysql_connect()

php - 我的系统允许重复 - 原因可能是 MySQL 写入延迟?

php - 拉维尔 4 : many to many (insertion)

swift - 如何使用对考虑的位数的限制来搜索数组?

php - SSL 错误 SSL3_GET_SERVER_CERTIFICATE :certificate verify failed

php - mySQL UPDATE 查询本地文件路径

iOS核心数据: Fetch child Magical Record data

search - Cassandra中的二级索引和反向索引有什么区别?