在mysql中,我有一个WHERE子句,它使用LIKE将关键字与字符串进行匹配。
WHERE title LIKE CONCAT('%',?,'%')这几乎可以工作,但我遇到了一个问题,有多个单词的标题返回错误的匹配。例如,关键字"press“将与标题”抑郁糟糕“相匹配--这是不应该发生的。
确保关键字仅在单词开头时才匹配的最佳方法是什么?
(提前)感谢你的帮助
发布于 2010-11-04 09:51:04
单词边界标记[[:<:]]、[[:>:]]是你的朋友。
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1
mysql> SELECT 'a xword a' REGEXP '[[:<:]]word[[:>:]]'; -> 0发布于 2010-11-04 09:44:33
WHERE title LIKE CAT(?, ' %')%是通配符,所以如果您在前面和后面都有它,它将查找任何包含?的内容。如果删除第一个%,它将是以?开头的任何内容
发布于 2010-11-04 09:49:32
我想你要找的是MATCH而不是LIKE。有了适当的索引,MATCH的速度也快得多。
下面是一些基础知识:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
https://stackoverflow.com/questions/4093207
复制相似问题